你的位置:首页 > 软件开发 > Java > 第一弹:Java 中创建对象的4种方式

第一弹:Java 中创建对象的4种方式

发布时间:2016-11-16 18:00:08
Java 是面向对象的语言,不可避免的,“对象”这个概念是 Java 语言的核心部分,这里来简单讨论一下在 Java 中创建一般对象的方法。  总结下来有以下4种创建对象的方法:使用 new 关键字调用对象的构造器;使用 Java 反射的 newInstance() 方法;使用 ...

  Java 是面向对象的语言,不可避免的,“对象”这个概念是 Java 语言的核心部分,这里来简单讨论一下在 Java 中创建一般对象的方法。

  总结下来有以下4种创建对象的方法:

  • 使用 new 关键字调用对象的构造器;
  • 使用 Java 反射的 newInstance() 方法;
  • 使用 Object 类的 clone() 方法;
  • 使用对象流 ObjectInputStream 的 readObject() 方法读取序列化对象;

 

1.      使用 new 关键字

 

  最常见的 Java 对象的构造方法,通过调用类提供的构造器创建对象。

 

 

2.      使用 newInstance() 方法

 

  Java 反射中有一个 newInstance() 方法,可以创建对象,步骤如下:

  • 获取要创建的类的 Class 对象。
  • 如果只需要调用这个类的访问权限为 public 无参构造器,直接使用 Class 类的实例方法 newInstance()。
  • 获取 Class 对象的构造器对象,通过调用 Class 类的实例方法 getDeclaredConstractors() 来获取构造器对象的数组。(获取所有构造器,无视访问权限的限制,数组顺序按照代码中的顺序决定)
  • 如果调用的构造器是 private 的,需要调用 Constractor 类的父类 AccessibleObject 类的实例方法 setAccessible(true) 来打破访问限制。
  • 使用 Constractor 类的实例方法 newInstance()。

 

  示例代码:

第一弹:Java 中创建对象的4种方式第一弹:Java 中创建对象的4种方式
 1 public class MethodNewInstance { 2  3   public static void main(String[] args) throws Exception { 4  5     // 得到类对象 6     Class<?> clazz = Class.forName("com.gerrard.create.method_newInstance.ObjectToCreate"); 7     // 类对象的 newInstance() 方法,只能调用公有的无参构造器 8     clazz.newInstance(); 9 10     // 得到构造器对象数组(不管是私有还是公有的构造器)11     Constructor<?>[] cons = clazz.getDeclaredConstructors();12     cons[1].newInstance();13     cons[2].newInstance("Gerrard");14     // 先打破私有构造器不可访问的限制15     cons[0].setAccessible(true);16     cons[0].newInstance("Gerrard", "Info");17   }18 }

原标题:第一弹:Java 中创建对象的4种方式

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。