gpt4 book ai didi

java - 如何在构造函数数组中查找复制构造函数

转载 作者:行者123 更新时间:2023-12-03 18:23:43 25 4
gpt4 key购买 nike

我正在使用 getConstructors() 方法来提取类的构造函数。该类在一个抽象父类(super class)引用中,在用户决定之前我不会知道正在调用哪个子类。这是我目前所拥有的。

Weapon stickCopy = stick;
System.out.println(stick);
System.out.println(stickCopy);

Class <? extends Weapon> myClass = stick.getClass( );

System.out.println(myClass.getSimpleName( ));

Constructor<?>[] construct = myClass.getConstructors( );

for(Constructor<?> constructor: construct)
{
System.out.println(constructor);
}

try
{
stickCopy = (Weapon) construct[2].newInstance((stick));
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println(stick);
System.out.println(stickCopy);

Stick 类是抽象 Weapon 类的子类。我试图从存储在玩家对象中的武器引用中找出深拷贝的代码。由于 Weapon 是抽象的,我无法从中调用复制构造函数。在我的 Stick 类中,复制构造函数是第三个构造函数,因此我将 2 硬编码到 try 语句中的构造数组中。如果我更改 stick 类的构造函数,例如,在复制构造函数前面添加一个新的构造函数或重新排序它们,我如何在运行时找到复制构造函数的位置?

此外,我以前从未使用过泛型,因此,如果我没有遵循通常被认为是好的编程习惯,请指正我。

最佳答案

如果您使用 the version of getConstructor that takes arguments您可以通过其参数类型指定所需的构造函数。据推测,您可能希望将 Stick.class 或 Weapon.class 传递给:

Constructor constructor = myClass.getConstructor(myClass);

关于java - 如何在构造函数数组中查找复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726788/

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