`
wangmored
  • 浏览: 165165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

new关键字、newInstance()方法

    博客分类:
  • java
阅读更多
new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
一个是方法,一个是关键字外。
创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。

Class.forName(xxx.xx.xx) 返回的是一个类,装载类用的;在java里面任何class都要装载在虚拟机上才能运行。[这个静态方法调用了启动类加载器,即加载java API的那个加载器。 ]
A a = (A)Class.forName("pacage.A").newInstance();

A a = new A();
是一样的效果。

Class.forName(xxx.xx.xx);
作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段,
静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了

动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象
String str = 用户输入的字符串
Class t = Class.forName(str);
t.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();

上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。









分享到:
评论

相关推荐

    new关键字和newInstance() 的区分

    Java 中的 new 关键字和 newInstance() 方法都是用于创建对象的,但是它们之间有着本质的区别。理解这两者的区别对于 Java 编程尤其重要。 首先,new 关键字是 Java 的一个保留字,用于创建一个新的对象。例如,`A ...

    newInstance()方法和new关键字

    ### newInstance()方法与new关键字的区别 在Java编程语言中,创建对象是十分常见的操作,而`newInstance()`方法和`new`关键字则是实现这一目的的两种主要方式。它们之间的区别不仅在于一个是方法调用,另一个是语言...

    java 中newInstance()方法和new关键字的区别

    Java 中 newInstance() 方法和 new 关键字的区别 Java 中的对象创建方式有多种,newInstance() 方法和 new 关键字是其中两种常用的方式。但是,它们之间有着本质的区别。本文将详细介绍 newInstance() 方法和 new ...

    Java中new关键字和newInstance方法的区别分享

    在Java编程语言中,`new`关键字和`newInstance()`方法都是用来创建对象的,但它们在使用场景和工作原理上存在显著差异。了解这些差异对于编写高效、灵活的代码至关重要。 首先,`new`关键字是Java语法的一部分,...

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

    在 Java 中,有两种创建对象的方式:使用 new 关键字和使用 newInstance() 方法。 * 使用 new 关键字创建对象:例如 `String sName = new String();` * 使用 newInstance() 方法创建对象:例如 `factory = ...

    浅析Java中的 new 关键字

    Java中的`new`关键字是创建和初始化对象的关键操作,它在编程中扮演着至关重要的角色。当我们使用`new`关键字时,实际上是执行了以下几个步骤: 1. 分配内存:Java虚拟机(JVM)在堆内存中为新对象分配所需的空间。...

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

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

    Java中new的用法.pdf

    Class.forName()用于加载类,然后可以使用newInstance()方法创建类的新实例。例如: ```java String className = "Example"; Class<?> cls = Class.forName(className); ExampleInterface factory = ...

    Java中new的用法.doc

    - **newInstance方法**: - 属于`java.lang.Class`类的方法。 - 需要在运行时通过类的完全限定名来获取类的Class对象。 - 调用`newInstance()`方法创建对象实例。 - 此方法会在创建对象之前确保类已经被加载并...

    js代码-参考new关键字实现myNew函数

    在JavaScript中,`new`关键字是一个非常重要的构造函数调用模式,它用于创建并初始化一个对象实例。`new`操作符背后的工作原理是相当复杂的,包括了对象的创建、原型链的设定以及上下文的绑定等多个步骤。在这个主题...

    Java中new的用法[文].pdf

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

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

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

    Java final关键字

    private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; } } ``` 在这个示例中,`Singleton`类是`final`的,确保...

    Java关键字的用法

    `native`关键字用于标记本地方法,这些方法是由非Java语言(如C/C++)实现的。 **示例:** ```java public native void nativeMethod(); ``` #### 30. `new` `new`关键字用于创建新对象。 **示例:** ```java ...

    java反射之动态代理

    在Java中,`newInstance()`方法和`new`关键字是两种不同的对象创建方式。`new`关键字直接根据类名创建一个新的对象,而`newInstance()`是通过`Class`对象来创建对象,它需要先通过类加载机制将类加载到JVM中。`new...

    java四种创建对象的方式

    Java中创建对象主要有四种显式的方式,分别是使用new关键字、反射机制、克隆克隆方法以及反序列化手段。每种方法都有其特定的使用场景和特点,以下是这些方法的详细说明: 1. 使用new关键字创建对象 这是最常见也是...

    Java面向对象程序设计static关键字.pptx

    instance = new Singleton(); } return instance; } } ``` 3. 配置类:可以使用static关键字来创建配置类,例如: ```java public class Config { public static final String DB_URL = "jdbc:mysql://...

Global site tag (gtag.js) - Google Analytics