在 Java 中创建对象的不同方法?
在 Java 中,类是用户定义的数据类型/蓝图,我们在其中声明方法和变量。
public class Sample{ }
声明类后,您需要创建一个对象(实例化)。您可以使用各种方式创建对象 −
使用 new 关键字
通常,使用 new 关键字作为 −
创建对象Sample obj = new Sample();
示例
在下面的 Java 中,我们有一个名为 sample 的类,它有一个方法(display)。从主方法中,我们实例化 Sample 类并调用 display() 方法。
public class Sample{ public void display() { System.out.println("This is the display method of the Sample class"); } public static void main(String[] args){ //实例化 Sample 类 Sample obj = new Sample(); obj.display(); } }
输出
这是 Sample 类的显示方法
使用 newInstance() 方法
名为 Class 的类的 newInstance() 方法创建此 Class 对象所代表的类的对象。
您可以通过将其名称作为字符串传递给 forName() 方法来获取类的 Class 对象。
Sample obj2 = (Sample) Class.forName("Sample").newInstance();
示例
在下面的 Java 中,我们有一个名为 sample 的类,它有一个方法 (display)。从 main 方法中,我们使用类 Class 的 newInstance() 方法创建 Sample 类的对象。
public class Sample{ public void display() { System.out.println("这是 Sample 类的 display 方法"); } public static void main(String[] args) throws Exception{ //创建 Sample 类的 Class 对象 Class cls = Class.forName("Sample"); Sample obj = (Sample) cls.newInstance(); obj.display(); } }
输出
这是 Sample 类的 display 方法
使用 clone() 方法
Object 类的 clone() 创建并返回当前类的对象。
示例
在下面的 Java 中,我们有一个名为 sample 的类,它有一个方法 (display)。我们从 main 方法创建 Sample 类的一个对象,然后使用 clone() 方法从该对象创建另一个对象。
public class Sample{ public void display() { System.out.println("这是 Sample 类的 display 方法"); } public static void main(String[] args) throws Exception{ //创建 Sample 类的 Class 对象 Sample obj1 = new Sample(); //使用 clone() 方法创建另一个对象 Sample obj2 = (Sample) obj1.clone(); obj2.display(); } }
输出
这是 Sample 类的 display 方法
使用来自 lang.reflect 的构造函数类
java.lang.reflect.Constructor 类的 newInstance() 方法使用当前构造函数创建并返回一个新对象。
示例
在下面的 Java 中,我们有一个名为 sample 的类,它有一个方法 (display)。从 main 方法中,我们使用 java.lang.reflect.Constructor 类创建 Sample 类的对象。
import java.lang.reflect.Constructor; public class Sample { public void display() { System.out.println("这是 Sample 类的 display 方法"); } public static void main(String[] args) throws Exception{ //创建 Constructor 类 Constructor 构造函数 = Sample.class.getDeclaredConstructor(); //使用 newInstance() 方法创建对象 Sample obj = constor.newInstance(); obj.display(); } }
输出
这是 Sample 类的 display 方法