.
最简单的创建对象的方法
Dag dag1 = new Dag({age : 1, colour:'red'});
当你说"进行时的对象创建",我理解为根据用户输入的类名动态创建对象。以下是一个简单的 Java 示例,演示如何通过反射根据用户输入的类名动态创建对象:
注:当类不存在或者类存在但没有构造函数的时候,这种情况就会报错
import java.lang.reflect.Constructor;
import java.util.Scanner;
public class DynamicObjectCreation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入类名: ");
String className = scanner.nextLine();
try {
// 使用反射加载类
Class<?> clazz = Class.forName(className);
// 获取类的默认构造函数
Constructor<?> constructor = clazz.getDeclaredConstructor();
// 创建对象
Object object = constructor.newInstance();
// 输出对象信息
System.out.println("成功创建了一个 " + className + " 类的对象: " + object);
} catch (ClassNotFoundException e) {
System.out.println("找不到指定的类: " + className);
} catch (NoSuchMethodException e) {
System.out.println("指定的类没有默认构造函数: " + className);
} catch (Exception e) {
System.out.println("创建对象时出现异常: " + e.getMessage());
} finally {
scanner.close();
}
}
}
先来提一个问题,有前面的创建对象的方案后,为什么需要Clone方案?
下面是实现一个浅拷贝Clone的实例
public class MyClass implements Cloneable {
private int value;
public MyClass(int value) {
this.value = value;
}
// 重写 clone 方法
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone(); // 浅拷贝
}
public static void main(String[] args) {
MyClass original = new MyClass(10);
try {
// 创建对象的克隆
MyClass clone = (MyClass) original.clone();
// 输出克隆对象的值
System.out.println("克隆对象的值: " + clone.value);
} catch (CloneNotSupportedException e) {
System.out.println("克隆失败: " + e.getMessage());
}
}
}