Class.forName()用法简介说明

转自:

Class.forName()用法简介说明

下文笔者讲述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

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Class.forName() 方法是 Java 反射机制中的一个方法,用于动态加载类。通过该方法可以在运行时加载指定的类,返回该类的 Class 对象。它通常用于加载数据库驱动程序或其他需要动态加载的类。例如,如果要加载名为 "com.example.MyClass" 的类,可以使用以下代码: ```java Class.forName("com.example.MyClass"); ``` 这将返回一个 Class 对象,可以用于创建该类的实例或访问其静态成员。 ### 回答2: Class.forName()是Java中的一个静态方法,用于加载并返回指定类名的类对象。它的主要作用是动态地加载类,可以在运行时根据需要动态加载指定的类,而不需要在编译时就确定加载的类。 具体来说,Class.forName()方法的作用包括两个方面: 1. 加载类:Class.forName()方法会根据指定的类名来加载对应的类。它会在类路径下搜索并加载指定的类文件,将类的字节码加载到内存中,并返回一个Class对象,表示该类在内存中的表示。 2. 初始化类:在类加载过程中,Class.forName()方法会自动初始化被加载类的静态代码块和静态变量。该过程会执行被加载类中的静态初始化代码,为类的静态变量分配内存空间,并为其赋予初始值。 需要注意的是,Class.forName()方法可以加载任意类型的类,包括普通的类、接口、抽象类,甚至是数组类。当指定的类名无法找到或加载时,该方法会抛出ClassNotFoundException异常。 Class.forName()方法常用于反射、数据库操作和框架开发等领域。在反射中,该方法可以根据类名动态地创建和操作对象;在数据库操作中,该方法可以加载数据库驱动程序,使得程序可以与数据库进行交互;在框架开发中,该方法可以根据配置文件等动态加载不同的实现类。 总之,Class.forName()方法是Java中一个重要的用于动态加载类的方法,能够在运行时加载指定的类,并对其进行初始化。它为Java的灵活性和动态性提供了重要的支持。 ### 回答3: Class.forName()是Java语言中的一个方法,用于加载并返回指定类名的Class对象。 在Java程序中,当我们需要使用一个类时,需要先加载这个类的Class对象。Class.forName()方法可以实现动态加载类,即在程序运行时才加载指定的类。通过这个方法,我们可以根据类的名称获取对应的Class对象,然后再通过Class对象进行一系列的操作,例如实例化对象、调用方法等。 Class.forName()方法的具体使用方式为:Class.forName("类的全限定名")。调用这个方法时,它会将指定的类名传递给ClassLoader,ClassLoader会根据类名去搜索并加载类的字节码文件,最终返回对应的Class对象。 Class.forName()方法常用在需要在运行时动态加载类的场景,例如使用反射机制时。通过Class.forName()方法,我们可以在运行时根据需要动态加载类,从而达到灵活使用不同的类的目的。另外,这个方法在一些框架中也常被使用,用于实现插件化、模块化等特性。 需要注意的是,Class.forName()方法会触发类的初始化操作,即执行类的静态代码块和静态成员变量的初始化。如果只是希望加载类而不执行初始化操作,可以使用ClassLoader的loadClass()方法替代Class.forName()方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值