转自:
http://www.java265.com/JavaCourse/202205/3351.html
下文笔者讲述Class.forName()方法的功能简介说明,如下所示:
class对象简介说明
class对象用于表示类 每一个类在JVM中都对应一个class对象 jvm中将使用class对象加入到类加载器中 注意事项: 1.java程序运行之前,并不会将所有的Class对象放入jvm中 2.每一个****.class类在jvm中只会对应一个Class实例对象 3.Class类只有一个私有构造函数,并且Class对象只能由JVM创建和加载 4.Class类对象功能:运行时提供和获取某个对象的类型信息
获得class对象的三种方法
1.调用Object类的getClass()方法来得到Class对象 如: ObjectTest t; Class c1 = t.getClass(); 2、使用Class类的中静态forName()方法获得与字符串相应的Class对象 如: Class c2=Class.forName(\"ObjectTest\") ObjectTest:须是接口或类的名字 class.forname()语法: Class c=Class.forName(\"类的全限定名\") 3、直接使用类名的class 如: Class c3 = User.class; Class c4 = int.class; Class c5 = Double[].class;
class的功能和方法
getname(): 以string类型返回class对象表示的实体(类,接口,数组,基本类型,void等)名称 newInstance(): 创建一个实例,只能调用默认构造器 getsuperclass(): 返回class表示的实体超类的名称 getClassLoader(): 返回该类的类加载器 getSimpleName(): 不办含包名的类名 isInterfence: class对象是否表示某个接口
Class.forName()用法
Class.forName(xxx.xx.xx): 返回的是一个类 Class.forName(xxx.xx.xx)的功能: JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段 Class.forName是一个静态方法,相同能够用来载入类 Class.forName语法: Class.forName(String name, boolean initialize, ClassLoader loader) 或 Class.forName(String className) name:类的全名,initialize:是否初始化类,loader:载入时使用的类载入器 另外一种形式则相当于设置了參数 initialize的值为 true。loader的值为当前类的类载入器
Class.forName()应用场景简介
A a = (A)Class.forName(“pacage.A”).newInstance(); 效果等同于 A a = new A();
newInstance和new关键字的区别
Java中工厂模式常使用newInstance()方法来创建对象 如 class c = Class.forName(“Example”); factory = (ExampleInterface)c.newInstance(); 其中ExampleInterface是Example的接口,也写成如下形式: String className = “Example”; class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); ----或------ String className = readfromXMlConfig;//从xml 配置文件中获得字符串 class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 注意事项: 1.使用newInstance()方法时,这个类已经加载连接 而使用new关键字时,这个类可以没有被加载 2.newInstance: 弱类型。低效率。只能调用无参构造。 new: 强类型。相对高效。能调用任何public构造。 3.Class.forName(“”)返回的是类。 Class.forName(“”).newInstance()返回的是object
来源:https://www.cnblogs.com/java265/p/16467222.html
本站部分图文来源于网络,如有侵权请联系删除。