在java里分别用new、反射、clone、反序列化四种方式产生对象
时间: 2023-12-03 11:04:30 浏览: 28
1. 使用new关键字创建对象:
```
Person p1 = new Person();
```
2. 使用反射创建对象:
```
Class<?> clazz = Class.forName("Person");
Person p2 = (Person) clazz.newInstance();
```
3. 使用clone方法创建对象:
```
Person p3 = new Person();
Person p4 = (Person) p3.clone();
```
4. 使用反序列化创建对象:
```
ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"));
Person p5 = (Person) in.readObject();
```
相关问题
java实例化对象有哪几种方式
Java实例化对象的方式有以下几种:
1. 使用new关键字:使用new关键字可以创建一个新的对象,例如:`Person p = new Person();`
2. 使用Class类的newInstance()方法:这种方式需要先获取Class对象,然后调用该对象的newInstance()方法来创建实例,例如:`Person p = Person.class.newInstance();`
3. 使用Constructor类的newInstance()方法:这种方式需要先获取Constructor对象,然后调用该对象的newInstance()方法来创建实例,例如:`Constructor<Person> constructor = Person.class.getConstructor(); Person p = constructor.newInstance();`
4. 使用反序列化:将对象序列化成字节流再反序列化成对象,例如:`ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser")); Person p = (Person) in.readObject();`
5. 使用clone()方法:该方法会复制一个对象并返回一个新的对象,例如:`Person p = new Person(); Person clone = (Person) p.clone();`
6. 使用反射:使用Class对象的getDeclaredConstructor()方法获取Constructor对象,然后使用Constructor对象的newInstance()方法来创建实例,例如:`Constructor<Person> constructor = Person.class.getDeclaredConstructor(); constructor.setAccessible(true); Person p = constructor.newInstance();`
以上是Java实例化对象的几种方式。
java创建对象的4种方式
Java中创建对象的四种方式如下:
1. 使用new关键字创建对象
```java
ClassName obj = new ClassName();
```
2. 使用反射机制创建对象
```java
Class<?> clazz = Class.forName("ClassName");
ClassName obj = (ClassName) clazz.newInstance();
```
3. 使用clone()方法创建对象
```java
ClassName obj1 = new ClassName();
ClassName obj2 = obj1.clone();
```
4. 使用序列化和反序列化创建对象
```java
// 序列化
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("objectFile"));
oos.writeObject(obj);
oos.close();
// 反序列化
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("objectFile"));
ClassName obj = (ClassName) ois.readObject();
ois.close();
```