当前位置: 首页> 文旅> 文化 > Java中创建对象的几种方式

Java中创建对象的几种方式

时间:2025/7/9 21:31:32来源:https://blog.csdn.net/rookie636/article/details/140503765 浏览次数:0次

Java中创建对象的几种方式

1. 使用new关键字

这是最直接、最常见的创建对象的方式。通过new关键字,Java会调用类的构造函数(Constructor)来初始化新创建的对象。

ClassName obj = new ClassName();

2. 使用clone()方法

如果类实现了Cloneable接口并覆盖了Object类的clone()方法,那么可以通过调用对象的clone()方法来创建该对象的浅拷贝(Shallow Copy)。

补充:深拷贝和浅拷贝的区别

浅拷贝:创建一个新对象,这个对象具有与原对象相同的字段和值。但是,如果对象的某些字段是引用类型(如对象或数组),那么浅拷贝只会复制这些引用,而不是引用指向的实际对象。
深拷贝:创建一个新对象,并递归地复制对象内的所有引用类型。这意味着新对象和原对象不再共享任何数据,即使数据是引用类型。深拷贝会创建一个完全独立的副本,包括所有层次上的引用类型。

public class Main {public static class Person implements Cloneable {// 必须覆盖clone方法@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}}public static void main(String[] args) throws CloneNotSupportedException {Person person = new Person();Person clonePerson = (Person)person.clone();}
}

3. 反射(Reflection)

反射允许程序在运行时检查和修改其结构和行为,包括创建对象。这通常用于框架或需要动态加载类的场景。

public class TestReflection {public static class Person  {public String name;public int age;public Person(String name, int age){this.name = name;this.age = age;}@Overridepublic String toString() {System.out.println("name: " + name + ", age: " + age);return null;}}public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {Constructor<Person> constructor = Person.class.getConstructor(String.class, int.class);Person obj = constructor.newInstance("yjh",18);obj.toString();}
}

4. 使用反序列化

public class TestSer {public static class Person implements Serializable {public String name;public int age;public Person(String name, int age){this.name = name;this.age = age;}@Overridepublic String toString() {System.out.println("name: " + name + ", age: " + age);return null;}}public static void main(String[] args) throws IOException, ClassNotFoundException {// 序列化Person order = new Person("YJH",18);ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Person.obj"));oos.writeObject(order);// 反序列化ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Person.obj"));Person obj = (Person) ois.readObject();obj.toString();}
}

注意:其中反射和new会调用类的构造方法。

关键字:Java中创建对象的几种方式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: