ToB企服应用市场:ToB评测及商务社交产业平台

标题: Class.forName()用法简介说明 [打印本页]

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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4