`

Class类的forName()方法

    博客分类:
  • Java
阅读更多
  Class类的forName()方法

查询java的api文档的Class类,其中的forName()有2个,一个带一个参数,一个带三个参数;学习了解下.....

public static Class forName(String className)
public static Class forName(String name, boolean initialize, ClassLoader loader) 


className - 所需类的完全限定名
initialize - 是否必须初始化类(静态代码块的初始化)
loader - 用于加载类的类加载器



这2个方法最后会连接原生方法forName0()   {什么东西,暂不知道...}
它的声明是:

private static native Class forName0(String name, boolean initialize,
ClassLoader loader) throws ClassNotFoundException;


只有一个参数的forName()方法,最后调用的是:
forName0(className, true, ClassLoader.getCallerClassLoader());
也就是说在只有一个参数的时候, 就默认的进行了初始化(静态代码块)
和类加载器loader.....   吗...


而三个参数的forName(),最后调用的是:
forName0(name, initialize, loader);
就是说自己定义是否初始化静态代码块和类加载器了..... 


[而静态初始化块是在类第一次被实例化的时候才被调用仅仅一次]

自己使用类加载器
java.net.URLClassLoader
分享到:
评论

相关推荐

    java中Class.forName方法的作用详解

    Java中的`Class.forName()`方法是一个非常关键的工具,主要用于动态加载类。它的作用在于根据给定的类全名(包括包名)返回对应的`Class`对象。`Class`对象是Java反射机制的基础,它代表着运行时的类信息,可以通过...

    Class.forName

    `Class.forName()`是Java中一个非常重要的方法,它主要用于动态加载和实例化类。这个方法在编程中常常用于实现灵活性和解耦,特别是在框架和插件系统中。下面将详细解释`Class.forName()`的工作原理、用途及其与`new...

    Java Class.forName()无法加载类

    NULL 博文链接:https://listen-raining.iteye.com/blog/1894456

    Java中通过Class类获取Class对象的方法详解

    通过Class类可以获取Class对象,获取Class对象有三种方式:通过Object类的getClass()方法、通过类名.class获取Class对象、通过Class类中的forName()方法。每种方式都有其特点和应用场景,掌握这些方式可以帮助开发者...

    class literal & instance.getClass() & Class.forName(String className)

    在Java编程语言中,"class literal"、"instance.getClass()" 和 "Class.forName(String className)" 是三个与类加载和类型查询紧密相关的概念。了解这些概念对于深入理解Java运行时的类加载机制至关重要。 首先,让...

    class.forname的作用 详细解析抽象类和接口的区别

    使用 abstract class 的方式定义抽象类可以有自己的数据成员,也可以有非 abstract 的成员方法,而使用 interface 的方式定义抽象类只能有静态的不能被修改的数据成员(也就是必须是 static final 的),所有的成员...

    Classfor的用法

    `Class.forName` 是 Java 反射 API 中的一个重要方法,主要用于动态加载类。该方法的主要作用是根据提供的全限定类名来加载并返回对应的 `Class` 对象。在 Java 开发过程中,当我们需要根据用户的输入或者配置文件中...

    在Java的反射中,Class.forName和Class

    首先,`Class.forName(String className)`是Java反射API中的一个静态方法,它用于根据给定的全限定类名(包括包名)动态地加载类。当你的应用程序需要在运行时才知道要使用哪个类,或者想要延迟加载某个类以提高性能...

    Java Class.forName()用法和newInstance()方法原理解析

    Class.forName()方法的用法可以分为两种,一种是使用Class.forName()方法加载类,然后使用newInstance()方法实例化该类,另一种是使用new关键字实例化类。两种方法的效果是一样的,但是它们的实现机制不同。Class....

    Class.forName()_newInstance()_New_三者区别

    首先,`Class.forName("className")` 是一个静态方法,它用于在运行时动态加载指定的类。它的主要作用是告诉Java虚拟机(JVM)去查找并加载类。如果类尚未被加载到内存中,JVM会按照类路径去寻找对应的`.class`文件...

    java中Class.forName的作用浅谈

    在Java编程语言中,`Class.forName()`方法是一个非常重要的功能,它主要用于动态加载类到Java虚拟机(JVM)中。这个方法的主要作用是根据给定的全限定类名(包括包名和类名)来查找并加载对应的类。下面我们将深入...

    Java 类加载机制 ClassLoader Class.forName.pdf

    2. **通过`Class.forName()`方法动态加载**:可以在运行时动态地加载类。 3. **通过`ClassLoader.loadClass()`方法动态加载**:提供了更多的灵活性,可以根据不同的需求加载不同的类。 这三种方式各有特点,具体...

    java元数据——CLass类

    1. 通过 Class 的 forName(String name) 方法传入一个类的完整类路径,也可以获得Class 对象,但由于使用的是字符串,必须强制转换才可以获取泛型的Class的Class对象,并且你应该考虑到这个方法可能抛出的 ...

    forname实现工程内部反射机制

    在“forname实现工程内部反射机制”这个主题中,我们将深入探讨如何利用`Class.forName()`方法来实现对工程内部类的动态访问。 首先,让我们了解`Class.forName()`的基本用法。这个方法接收一个字符串参数,该参数...

    浅谈java中类名.class, class.forName(), getClass()的区别

    使用类名.class 的方式获取 Class 对象时,不会做类的初始化工作,而使用 class.forName() 的方式获取 Class 对象时,JVM 将装入类,并做类的静态初始化。使用 getClass() 的方式获取 Class 对象时,JVM 将对类进行...

    注册驱动:Class.forName(xxx.Driver).xmind

    对SPI,理论联系实际的理解

    liuwei1989#study-guide#17-Class.forName和classloader的区别1

    并且只有调用了newInstance()方法采用调用构造函数,创建类的对象看下Class.forName()源码//Class.forName(String c

    jdbc中class.forname的作用

    在Java JDBC编程中,`Class.forName()` 方法起着至关重要的作用。它的主要任务是动态加载指定的类并执行其实例的静态初始化块。在上下文中,`Class.forName()` 被用来加载数据库驱动,比如MySQL的`...

    JavaSE062Class类、Method类及Field类的使用方式深度探析.doc

    1. 使用Class类的静态方法forName:Class.forName("java.lang.string"); 2. 使用类的.class方法:String.class; 3. 使用对象的getClass()方法:String s = "aa"; Class<?> classType = s.getClass(); 二、Method类...

Global site tag (gtag.js) - Google Analytics