gpt4 book ai didi

java - 用单个对象的克隆填充数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:41:53 24 4
gpt4 key购买 nike

用单个对象的克隆填充 Java 数组的快速简便方法是什么?

例如之后:

Rectangle[] rectangles = new Rectangle[N];
fillWithClones(rectangles, new Rectangle(1, 2, 3, 4));

rectangles 数组将包含 N 个不同的 Rectangle 实例,用相同的坐标初始化。

我知道 Java 中 Object.clone() 的缺陷,但在这种情况下我知道要复制的对象具有非抛出、公共(public) clone() 方法,但可能有也可能没有公共(public)复制构造函数。

我猜某处有一个库方法可以执行此操作,但我认为它不在 JDK、Commons-collections 或 Guava 中。

最佳答案

如果在编译时没有要使用的特定类型,则必须通过反射调用 clone 方法。

private static <T> T cloneByReflection(T object) {
try {
return (T) object.getClass().getMethod("clone").invoke(object);
} catch (Exception e) {
return null; // or whatever you want to do
}
}

public static <T> void fillWithClones(T[] array, T template) {
for (int i = 0; i < array.length; ++i)
array[i] = cloneByReflection(template);
}

关于java - 用单个对象的克隆填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com