java中实例化(创建)对象有哪几种方式

1.用new 创建对象,这是最常用的创建对象的方法。

User user1 = new User(2,"柳岩");

2.运用反射,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

Class<?> c = Class.forName("com.itheima.User");//获取字节码文件对象
User user=(User)c.newInstance();

3.调用对象的clone()方法
clone()表示克隆,使用这个实例化一个对象的前提是:前面已经有一个实例化过的对象

User user1 = new User(2,"柳岩");
User user2 = (User) user1.clone();

4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。

public class Demo01_ObjectOutputStream {

	public static void main(String[] args) throws IOException, ClassNotFoundException {
//		writeObj();
		readObj();
	}
	
	public static void writeObj() throws  IOException{
	//序列化
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:\\work\\abc\\person.txt"));
		
		Person p = new Person("柳岩",38);
		//写对象
		oos.writeObject(p);
		
		oos.close();
	}
	
	public static void readObj() throws IOException, ClassNotFoundException{
	//反序列化
		ObjectInputStream ois= new ObjectInputStream(new FileInputStream("d:\\work\\abc\\person.txt"));
		//读对象
		Object obj = ois.readObject();//相当于new Person();
		System.out.println(obj);
		
		ois.close();
	}
}

1和2都会明确的显式的调用构造函数 ;
3是在内存上对已有对象的影印,所以不会调用构造函数 ;
4是从文件中还原类的对象,也不会调用构造函数。

猜你喜欢

转载自blog.csdn.net/qq_42848910/article/details/107584202