How to Create Object in Java

2025年4月6日 | 阅读 7 分钟

对象OOPs 语言的基本构建块。在 Java 中,我们无法在不创建对象的情况下执行任何程序。本节将讨论创建Java中对象的各种方法,并学习如何在Java中创建对象。

Java 提供了五种创建对象的方法。

  • 使用 new 关键字
  • 使用 clone() 方法
  • 使用 Class 类的 newInstance() 方法
  • 使用 Constructor 类的 newInstance() 方法
  • 使用 反序列化

使用 new 关键字

使用 new 关键字是创建类对象或实例的最常用方法。当我们使用 new 关键字创建类的实例时,它会为新创建的对象分配内存(堆),并返回指向该内存的引用。new 关键字也用于创建数组。创建对象的语法是:

让我们创建一个使用 new 关键字创建对象的程序。

CreateObjectExample1.java

输出

Welcome to javaTpoint

通过使用 new 关键字,我们还可以调用类的构造函数(默认或带参数的)。

CreateObjectExample2.java

输出

Welcome to javaTpoint

使用 clone() 方法

clone() 方法是 Object 类的方法。它创建对象的副本并返回相同的副本。JVM 在调用 clone() 方法时会创建一个新对象。它将先前创建的对象的所有内容复制到新对象中。请注意,它不会调用任何构造函数。使用 clone() 方法时,我们必须实现 Cloneable 接口。如果对象的类不支持 Cloneable 接口,则该方法会抛出 CloneNotSupportedException 异常。覆盖 clone() 方法的子类如果实例无法克隆,则可以抛出异常。

注意:该方法创建的是对象的一个副本,而不是一个新对象。

语法

我们使用以下语句创建新对象。

CreateObjectExample3.java

输出

New Object Created	

使用 Class 类的 newInstance() 方法

Class 类的 newInstance() 方法也用于创建对象。它调用默认构造函数来创建对象。它返回由对象表示的类的已创建的新实例。它内部使用 Constructor 类的 newInstance() 方法。

语法

它抛出 IllegalAccessExceptionInstantiationExceptionExceptionInInitializerError 异常。

我们可以通过以下方式创建对象:

在上述语句中,forName() 是 Class 类的静态方法。它解析 String 类型的参数 className。它返回具有完全限定名的类的对象。它加载类,但不创建任何对象。如果类无法加载,它会抛出 ClassNotFoundException,如果链接失败,则抛出 LinkageError

要创建对象,我们使用 Class 类的 newInstance() 方法。仅当知道类名并且该类具有公共默认构造函数时,它才有效。

在下面的程序中,我们使用 newInstance() 方法创建了一个新对象。

CreateObjectExample4.java

输出

A new object created.

使用 Constructor 类的 newInstance() 方法

它与 Class 类的 newInstance() 方法相似。它是一种创建对象的反射方式。该方法定义在 Constructor 类中,该类属于 java.lang.reflect 包。我们还可以使用 newInstance() 方法调用带参数的构造函数和私有构造函数。与 Class 类的 newInstance() 方法相比,它被广泛使用。

语法

该方法将 Object 数组作为参数解析。原始类型的值包装在适当类型的包装器对象中。它通过调用构造函数返回一个新创建的对象。它抛出 IllegalAccessExceptionIllegalArgumentExceptionInstantiationExceptionInvocationTargetExceptionExceptionInInitializerError 异常。

我们可以通过以下方式创建对象:

让我们创建一个使用 newInstance() 方法创建对象的程序。

CreateObjectExample5.java

输出

JavaTpoint

使用反序列化

在 Java 中,序列化是将对象转换为字节流序列的过程。序列化的反向过程(字节流到对象)称为反序列化。当我们序列化或反序列化对象时,JVM 会创建一个新对象。它不使用构造函数来创建对象。在使用反序列化时,必须在类中实现 Serializable 接口(标记接口)。

How to Create Object in Java

序列化: ObjectOutputStream 类的 writeObject() 方法用于序列化对象。它将对象发送到输出流。

语法

反序列化: ObjectInputStream 类的 readObject() 方法用于反序列化对象。它从流中引用对象。

语法

注意:如果不想将字段包含在对象中,请将其设为 static 或 transient。它不会包含在序列化过程中。

让我们通过一个程序来理解序列化和反序列化。

Employee.java

我们创建了一个名为 Employee 的类,该类的对象将被序列化和反序列化。

Java 对象序列化

在以下程序中,我们使用 ObjectOutputStream 类的 writeObject() 方法序列化了一个 Employee 类的对象。对象的状态保存在 employee.txt 文件中。

SerializationExample.java

输出

Successfully Created

Java 对象反序列化

在以下程序中,我们将反序列化上面程序中序列化的对象。

DeserializationExample.java

输出

198054 Andrew

在以上五种方法中,我们注意到 new 关键字和两个 newInstance() 方法都使用构造函数来创建对象,而另外两种方法不使用构造函数。


Java 创建对象选择题

1. 以下哪种是创建 Dog 类对象的正确方法?

  1. Dog dog = Dog();
  2. Dog dog = new Dog;
  3. Dog dog = new Dog();
  4. Dog dog = Dog.new();

答案:C)

解释:在 Java 中创建对象的正确方法是使用 new 关键字后跟类构造函数。


2. new 关键字在 Java 中做什么?

  1. 为新对象分配内存。
  2. 初始化新变量。
  3. 导入包。
  4. 删除对象。

答案:A)

解释: new 关键字为新对象分配内存并返回指向该内存的引用。


3. 可以使用哪种方法按名称创建类的实例?

  1. Class.forName("classname").newInstance();
  2. Class.newInstance("classname");
  3. new classname();
  4. Instance.new("classname");

答案:A)

解释:此方法动态加载类并创建一个新实例。


4. 在 Java 中可以不使用 new 关键字创建对象吗?

  1. 是的,使用反射。
  2. 不,必须使用 new 关键字。
  3. 是的,使用静态方法。
  4. 不,只能使用 new。

答案:A)

解释:反射允许在不使用 new 关键字的情况下创建对象。


5. 关于 Java 中的对象创建,以下哪项是正确的?

  1. 对象在栈上创建。
  2. 对象在堆上创建。
  3. 对象在方法区域创建。
  4. 对象在常量池中创建。

答案:B)

解释:在 Java 中,对象始终在堆上创建。


下一主题Java 教程