一、使用new关键字
这是我们最常用的创建对象的方式了,通过这种方式可以得到一个新的对象。
User user = new User();
二、通过反射
可以通过class.newInstance()或constructor.newInstance()创建新的对象。
1.通过class.newInstance()
User user = User.class.newInstance();
2.通过constructor.newInstance()
这种方式是通过构造器得到新的实例
Constructor<User> constructor = User.class.getConstructor();
User user2 = constructor.newInstance();
三、通过对象的clone()方法
通过这种方式需要原来的类实现Cloneable接口
User user = new User();
User userClone = user.clone();
四、通过反序列化
先将对象序列化,再反序列化将会得到一个新的对象。
//伪代码如下
User user = new User();
// 序列化为字节数组
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(user);
byte[] byteArray = byteArrayOutputStream.toByteArray();
// 反序列化为新的user对象
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
User newPerson = (User) objectInputStream.readObject();
System.out.println(user);
System.out.println(newPerson);