`

Java的反射机制之动态加载类和静态加载类

 
阅读更多

一、什么是动态加载类?什么又是静态的加载类?

Class.forName 不仅表示类的类型,还代表了动态加载类。编译时加载是静态加载类,运行时加载是动态加载类。

也就是说,new 是静态加载类,在编译时刻就需要加载所有可能使用到的功能,如果该类不存在,编译将不会通过,就会报错。而在日常中我们希望用到哪个就加载哪个,不用不加载,即使有的类不存在编译也会通过,就需要动态加载类。

二、举例

1、静态加载类举例

public class Main{  
    public static void main(String args[]){  
        if("A".equals(args[0])){  
            A a=new A();  
            a.start();  
        }  
        if("B".equals(args[0])){  
            B b=new B();  
            b.start();  
        }  
    }  
}  

 上述代码中,并没有写A类和B类及它们的start()。在编译的时候就会报错。

2、动态加载类举例(有时也叫动态代理)

public class Main{  
    public static void main(String args[]){  
        try{  
              
            Class c=Class.forName(args[0]);  //代表所有的类,即所有的类都是class类的实例
          
            All a=(All)c.newInstance();  //代表所有类的一个实例,这里使用了多态
            a.start();  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
    }  
}  
class A implements All{  
    public void start(){  
        System.out.println("A....START");  
    }  
}  
class B implements All{  
    public void start(){  
        System.out.println("B....START");  
    }  
}  
//接口  
interface All{  
    public void start();  
}  

 上述代码中,并没有像静态加载类那样在main()方法中,通过new关键字创建所有类的具体对象(即并没有指定我们需要实现的对象是属于哪些类的),也就不可能出现,若类不存在而编译失败的问题了。在运行程序时,需要哪个类的对象就动态的创建哪个类的对象,也就是说动态的实现了类的加载。

 

分享到:
评论

相关推荐

    java面试题--反射机制

    动态加载类是Java反射机制的重要应用场景之一。通过`Class.forName()`方法或者`ClassLoader`的`loadClass()`方法,可以根据类名字符串在运行时加载类。 #### 七、操作成员 - **创建对象**:使用`Class`对象的`new...

    JAVA反射机制的入门代码

    总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...

    反射机制和类加载机制学习总结

    反射机制和类加载机制是Java编程语言中的两个重要概念。反射提供了强大的运行时元数据操作能力,而类加载机制则确保了类的安全加载和动态管理。深入理解这两个机制对于Java开发者来说至关重要,尤其对于那些从事框架...

    JAVA 反射机制与动态代理ppt

    总的来说,Java反射机制和动态代理是Java平台强大而灵活的特性,它们使得Java程序能够在运行时具有更高的灵活性和可扩展性。然而,使用反射也可能带来性能开销和安全风险,因此在实际应用中需要权衡利弊,合理使用。

    JAVA反射机制与类的加载

    总的来说,Java反射机制和类加载机制为开发者提供了强大的工具,可以用于动态编程、插件系统、元编程等多种场景。然而,由于反射操作涉及到安全性问题和性能开销,因此在实际使用时应谨慎考虑。

    Java反射机制总结

    - **运行时装配**:Java反射允许程序在运行时动态地加载类和创建对象,这对于构建可扩展的应用程序非常有用。 - **元数据查询**:开发人员可以利用反射来查询类的元数据,如字段名、方法签名等。 - **动态调用方法**...

    候捷谈Java反射机制

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时获取和操作任何已知名称的类的内部信息。这一机制使得Java具备了一定的动态性,虽然在传统的分类中Java被视为静态类型语言。通过反射,开发者可以在...

    Java反射机制与动态代理

    Java反射机制是Java编程语言的一项强大特性,它允许程序在运行时检查类、接口、字段和方法的信息,甚至能够在运行时动态地创建对象、调用方法。反射机制的核心在于Java的`java.lang.reflect`包,其中包括`Class`、`...

    Java反射机制课件ppt

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这种机制使得Java具有高度的灵活性和动态性,可以在编译时未知类的情况下进行类的加载、实例化、方法调用等操作...

    java反射机制,很安逸.不要错过

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法的信息,打破了通常编译时静态绑定的限制。通过反射,我们可以动态地创建对象,调用方法,访问和修改字段值,甚至...

    反射实例-JAVA反射机制.doc

    3. 动态性:反射可以动态加载类,使得更新和调试变得更加便捷。 缺点: 1. 性能损耗:反射操作比直接调用方法慢,因为它涉及到运行时的类型检查和安全检查。 2. 安全风险:反射可以访问私有成员,可能破坏封装性,...

    Java动态类加载机制研究及应用.pdf

    Java 动态类加载机制研究及应用是基于 Java 虚拟机(JV M)机制的,旨在实现 Java 应用程序中动态加载类文件,而不影响其他功能模块的正常运行。为了实现这个目标,需要对 Java 类加载器的体系结构、动态类加载机制...

    java 利用反射获取内部类静态成员变量的值操作.docx

    3. **反射**:反射是在运行时检查类、接口、字段和方法等的能力,通常用于实现动态代理或需要动态加载类的场景。 #### 三、核心知识点 接下来,我们将通过一个具体的例子来演示如何使用Java反射获取内部类的静态...

    java反射机制详解

    通过 Java 反射机制,开发者可以在运行时判断任意一个对象所属的类、构造任意一个类的对象、判断任意一个类所具有的成员变量和方法、调用任意一个对象的方法,并生成动态代理。 Java 反射机制主要提供了以下功能: ...

    JAVA 反射机制应用

    总之,Java反射机制为开发者提供了强大的工具,使得程序在运行时能够对自身进行深入的探索和操作。然而,使用时也需谨慎,权衡其带来的灵活性与潜在的性能损失和安全风险。在实际开发中,合理运用反射可以大大提高...

    java反射机制PPT

    Java反射机制是Java编程语言中一项强大的工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。反射机制的核心在于能够在运行时动态地获取类的信息,并且可以动态调用对象的方法,创建对象,甚至修改对象...

Global site tag (gtag.js) - Google Analytics