1,使用 new 关键字:通过使用 new 关键字和构造函数来创建对象:
MyClass obj = new MyClass();
- 在Main类的main方法中,我们使用new关键字来实例化一个MyClass对象,并调用其构造函数MyClass(10)来初始化对象。
- 然后,我们调用创建的对象的display方法来验证对象已成功创建。
2,使用 Class 类的 newInstance 方法:通过调用类的 newInstance 方法来创建对象:
MyClass obj = (MyClass) Class.forName("com.example.MyClass").newInstance();
- 定义了一个名为MyClass的类,其中包含了一个名为myMethod的方法。
- 在Main类的main方法中,我们使用了Class.forName("MyClass")来获取MyClass类的Class对象。Class.forName()方法用于根据类名获取对应的Class对象。
- 然后,我们调用Class对象的newInstance()方法来创建MyClass类的对象。这个方法会调用MyClass类的默认构造函数来实例化对象。
- 最后,我们调用创建的对象的myMethod()方法,以验证对象已成功创建。
3,使用 clone 方法:通过调用对象的 clone 方法来创建对象的副本:
MyClass obj1 = new MyClass();
MyClass obj2 = obj1.clone();
- 定义了一个名为MyClass的类,其中包含了一个私有成员变量value,以及构造函数和一些方法。
- MyClass类实现了Cloneable接口,这是一个标记接口,用于指示该类的实例可以被克隆。
- 在MyClass类中,重写了clone方法,并调用了super.clone()来创建对象的副本。需要注意的是,clone方法返回的是Object类型,因此需要进行类型转换。
- 在Main类的main方法中,首先创建了一个MyClass对象obj1,并设置其值为10。
- 然后,通过调用obj1.clone()来创建obj1的副本obj2。需要注意的是,clone方法会抛出CloneNotSupportedException异常,因此需要进行异常处理。
- 最后,我们输出了obj2的值,以验证对象的副本已成功创建。
4,使用反射机制:通过使用Java的反射机制来动态创建对象:
Class<?> clazz = Class.forName("com.example.MyClass");
MyClass obj = (MyClass) clazz.getDeclaredConstructor().newInstance();
- 使用Class.forName("MyClass")来获取MyClass类的Class对象。
- 使用getConstructor(int.class)来获取MyClass类中带有一个int参数的构造函数。
- 使用constructor.newInstance(10)来调用构造函数创建MyClass对象,并传递参数10。
- 最后,我们调用创建的对象的display方法来验证对象已成功创建。