Java创建对象的方式
...大约 1 分钟
Java创建对象的方式
Java创建对象的方式总结
(1)new一个对象
(2)克隆一个对象(Object.clone())
(3)反射机制(通过指定类动态加载一个对象、或者借助构造器动态加载对象)
(4)序列化和反序列化(实现Seriaizable接口)
案例说明
public class User{
private String name;
private int age;
}
1.new方式
// 最传统的做法,通过new方式创建一个对象
User user = new User();
2.克隆一个对象(实现Cloneable接口)
public class Employee implements Cloneable{
private String empName;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
// 方式2:克隆一个对象(Object.clone())
@SneakyThrows
void test2() {
Employee emp1 = new Employee();
Employee emp2 = (Employee) emp1.clone();
System.out.println(emp1 + "-----" + emp2);
}
3.反射机制
(1)指定类动态加载:XXX.class.newInstance();
、Class.forName("类全路径").newInstance();
(2)指定构造器加载:XXX.class.getConstructor().newInstance();
// 3.1反射机制(通过类派发一个对象)
@SneakyThrows
void test3() {
User user = User.class.newInstance();
System.out.println(user);
}
// 3.2反射机制(动态加载一个对象)
@SneakyThrows
void test4() {
User user = (User) Class.forName("com.noob.demo.createObj.User").newInstance();
System.out.println(user);
}
// 3.3反射机制(通过类的构造函数构造一个对象)
@SneakyThrows
void test5() {
User user = User.class.getConstructor().newInstance();
System.out.println(user);
}
4.反序列化
(1)对应对象实现Seriaizable接口(标志性接口,用于标志类可被序列化)
(2)通过输入输出流进行序列化处理
public class Admin implements Serializable {
private String name;
private static final long serialVersionUID = 1L;
}
// 4.反序列化一个对象
@SneakyThrows
void test6() {
Admin admin = new Admin();
admin.setName("俺是一个管理员");
// 序列化一个管理员(将Java对象转化为字符串序列)
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("com.noob.demo.Admin"));
objectOutputStream.writeObject(admin);
objectOutputStream.close();
// 反序列化(将对应的对象流转化为Java对象)
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("com.noob.demo.Admin"));
Admin adminObj = (Admin) objectInputStream.readObject();
objectInputStream.close();
System.out.println(adminObj.getName());
}
Powered by Waline v3.1.3