Java中创建对象的5种方式总结
Java中创建对象有5种方式,分别是:使用new关键字、使用Class类的newInstance()方法、使用Constructor类的newInstance()方法、使用clone()方法、使用反序列化。
使用new关键字
使用new关键字可以直接创建一个对象,其语法格式如下:
// 创建类的对象
ClassName objectName = new ClassName();
其中,ClassName为类名,objectName为对象名。
举个例子,如下所示:
// 创建一个Person对象
Person person = new Person();
使用Class类的newInstance()方法
使用Class类的newInstance()方法可以动态地创建一个对象,其语法格式如下:
// 获取类对象
Class<?> clz = Class.forName("全限定类名");
// 创建类对象
Object object = clz.newInstance();
其中,"全限定类名"指的是包名和类名的全称。
举个例子,如下所示:
// 获取Person类对象
Class<?> clz = Class.forName("com.example.Person");
// 创建Person对象
Object object = clz.newInstance();
使用Constructor类的newInstance()方法
使用Constructor类的newInstance()方法可以通过构造函数动态地创建一个对象,其语法格式如下:
// 获取类对象
Class<?> clz = Class.forName("全限定类名");
// 获取构造函数
Constructor<?> constructor = clz.getConstructor(参数列表);
// 创建类对象
Object object = constructor.newInstance(参数列表);
其中,"全限定类名"指的是包名和类名的全称,参数列表指的是构造函数中的参数列表。
举个例子,如下所示:
// 获取Person类对象
Class<?> clz = Class.forName("com.example.Person");
// 获取Person类的带两个参数的构造函数
Constructor<?> constructor = clz.getConstructor(String.class, int.class);
// 创建Person对象
Object object = constructor.newInstance("张三", 20);
使用clone()方法
使用clone()方法可以通过一个已有的对象来克隆出一个新的对象,其语法格式如下:
// 创建类的对象
ClassName object1 = new ClassName();
// 克隆对象
ClassName object2 = (ClassName) object1.clone();
其中,实现克隆需要实现Cloneable接口和重写Object类中的clone()方法。
举个例子,如下所示:
// 定义一个Person类,实现Cloneable接口,重写clone()方法
class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public Person clone() throws CloneNotSupportedException {
Person person = (Person) super.clone();
person.name = this.name;
person.age = this.age;
return person;
}
}
// 创建Person对象
Person person1 = new Person("张三", 20);
// 克隆Person对象
Person person2 = person1.clone();
使用反序列化
使用反序列化可以将一个对象从文件或网络获取到的字节流中恢复出来,其语法格式如下:
// 反序列化对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file path"));
ClassName object = (ClassName) ois.readObject();
ois.close();
其中,"file path"指的是文件路径。
举个例子,如下所示:
// 定义一个Person类,实现Serializable接口
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
// 序列化Person对象到文件中
Person person = new Person("张三", 20);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"));
oos.writeObject(person);
oos.close();
// 反序列化Person对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"));
Person person2 = (Person) ois.readObject();
ois.close();
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中创建对象的5种方式总结 - Python技术站