0 0

关于class.forName()跟new 关键字0

关于Class.forName()和new 关键字,网上文章很多,但是我还是有些不明白.
1.静态代码块,不过不用Class.forName,用new关键字,静态代码块会执行吗?
2.用new关键字实例化一个对象时,允许该类可能还未加载到jvm,那么什麽时候才加载呢?
2013年7月28日 16:53

1个答案 按时间排序 按投票排序

0 0

Class.forName(className,boolean)
其实调用后面还有个参数,要不要初始化static区域


new 的时候,遇到还未装载的class 就会装载class,同时初始化static

这句话还说明,不用这个class 就不会去装载和初始化它

2013年7月28日 18:39

相关推荐

    Class.forName

    下面将详细解释`Class.forName()`的工作原理、用途及其与`new`关键字的区别。 `Class.forName(String className)`方法接收一个字符串参数,这个字符串代表了类的全限定名(包括包名和类名)。当调用此方法时,JVM会...

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

    在Java编程中,`Class.forName()`, `newInstance()` 和 `new` 关键字都是与对象创建和类加载紧密相关的概念,但它们各自有着不同的用途和限制。 首先,`Class.forName("className")` 是一个静态方法,它用于在运行...

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

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

    java中Class.forName的作用浅谈

    下面我们将深入探讨`Class.forName()`的用途、工作原理以及与`new`关键字的区别。 一、`Class.forName()`的用途 1. **动态加载类**:当需要在程序运行时根据某些条件或用户输入来决定加载哪个类时,`Class.forName...

    浅析使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver")

    `Class.forName()`方法内部调用了本地方法`forName0`,并传入了一个布尔参数`initialize`,默认值为`true`,表示在加载类之后执行初始化。初始化阶段不仅包括对类变量的赋值,还包括执行静态初始化块,对于父类也是...

    new关键字和newInstance() 的区分

    例如,`A a = (A) Class.forName("pacage.A").newInstance();` 就是使用 newInstance() 方法创建了一个 A 类的对象。newInstance() 方法的作用是加载一个类,并创建一个新的对象。 从本质上讲,new 关键字和 new...

    newInstance()方法和new关键字

    Class<?> clazz = Class.forName(className); Object obj = clazz.newInstance(); ``` - **new关键字**适用于以下情况: - 需要显式指定构造函数参数时。 - 类的实例化逻辑简单且明确。 - 示例代码: ```...

    Java中new的用法.pdf

    在文档内容中,存在一些由于OCR扫描导致的错误和遗漏,例如“javaAPInewInstance()”应该理解为“java.lang.Class.newInstance()”,“ClassforName()”应该是“Class.forName()”。这些语法错误需要在实际阅读文档...

    Java中new的用法[参考].pdf

    * 使用 newInstance() 方法创建对象:例如 `factory = (ExampleInterface)Class.forName("Example").newInstance();` 两种方式的主要区别在于创建对象的方式不一样。new 关键字是使用类加载机制,而 newInstance() ...

    java中的Class类和反射.docx

    - 使用`Class.forName("类的全限定名")`,例如`Class.forName("java.lang.String")`。 #### 二、Class类的特性 `Class`类自身并没有公共的构造方法,它是由JVM自动创建的。这意味着我们无法直接实例化`Class`对象...

    Java中new的用法[文].pdf

    `new`是关键字,直接创建新对象,而`newInstance()`是方法,它需要先通过`Class.forName()`加载类,然后才能实例化。使用`newInstance()`时,类必须已经被加载并且连接,这是`Class.forName()`负责的部分。`new...

    Java中new的用法.doc

    2. **获取Class对象**:使用`Class.forName()`方法根据类名获取对应的Class对象。 3. **创建对象实例**:通过`newInstance()`方法创建对象实例。 #### 七、总结 `new`关键字是Java中创建对象的基础,理解其使用方法...

    Java类加载器.pdf

    - 使用`Class.forName(String className)`或`Class.forName(String className, boolean initialize, ClassLoader loader)`方法显式加载类。 - 使用`ClassLoader.loadClass(String name)`方法显式加载类。 其中,`...

    JDBC DriverManager.registerDriver(new Driver());

    1. **加载驱动**:通过`Class.forName()`方法加载驱动类,这会触发驱动类的静态初始化块,完成驱动的初始化。 2. **创建Driver对象**:使用`new`关键字实例化驱动类。 3. **注册驱动**:将创建的`Driver`对象传递给`...

    Java关键字的用法

    `class`关键字用于定义一个新的类。 **示例:** ```java public class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; } } ``` ...

    java中的反射机制(内含大量实例)

    我们可以通过`Class.forName()`方法获取到`Class`对象,也可以通过对象的`getClass()`方法或者类的`class`关键字来获取。 2. `Constructor` 类:代表类的构造器,提供了创建类实例的能力。我们可以通过`Class.get...

    Java中的CLASS类Java中的CLASS类

    Class<?> clazz = Class.forName("com.zj.sample.Point"); Constructor<?> constructor = clazz.getConstructor(int.class, int.class); Point point = (Point) constructor.newInstance(10, 20); System.out....

    《剑指offer》Java创建对象的五种方式.pdf

    字节码中,`Class.forName`使用`invokestatic`调用静态方法,而`newInstance`使用`invokespecial`调用实例方法。 3. **使用反射创建对象** 反射是Java提供的一种强大机制,允许程序在运行时检查和修改其他类的...

    java基础学习内容

    Class<?> clazz = Class.forName("Student"); ``` 或 ```java Class<?> clazz = Student.class; ``` #### 2.2 获取构造器并创建对象 ```java Class[] types = {String.class}; Constructor<?> constructor = clazz....

    class——Java高级开发工程师必须懂得

    - **动态加载类**: 通过`Class.forName()`方法在运行时加载类,然后通过`newInstance()`创建对象。这种方式允许程序在运行时决定加载哪些类,提高了代码的灵活性。 动态加载类的一个常见应用场景是处理模块化或...

Global site tag (gtag.js) - Google Analytics