Class.forName()用法简介说明

娜扎 Java教程 发布时间:2022-05-12 15:18:57 阅读数:4939 1
下文笔者讲述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.Java265.com/JavaCourse/202205/3351.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者