gpt4 book ai didi

java - 在不知道 Java 类名称的情况下调用类构造函数

转载 作者:行者123 更新时间:2023-11-29 04:51:03 26 4
gpt4 key购买 nike

这个问题用代码比用文字更容易理解:

Map<Integer, Parent> objectMap = new HashMap<Integer, Parent>();

Parent myParent;
Child1 myChild1;
Child2 myChild2;
//A lot more myChilds

myChild1 = new Child1(); //Constructor is expensive, object may not get used
myChild2 = new Child2(); //Constructor is expensive, object may not get used
//Call constructor for all of myChilds

objectMap.put(1, myChild1);
objectMap.put(2, myChild2);
//Place all the myChilds in the objectMap


Parent finalObject;

int number = 1; //This can be any number

finalObject = objectMap.get(number);

如您所见,我事先并不知道 finalObject 是哪个类。代码没有问题,但这是我的问题:

如何避免调用所有构造函数?

因为只有 myChild1 或 myChild2 会被使用,而且构造函数的方法非常昂贵,所以我只想调用实际会被使用的方法。

有点像

finalObject.callConstructor();

最后一行

有什么想法吗?

提前致谢。

最佳答案

在 map 中存储 .class 然后使用 Class.newInstance()什么时候需要?

final Map<Integer, Class<? extends Parent>> objectMap = new HashMap<>();
objectMap.put(1, Child1.class);
objectMap.put(2, Child2.class)
// ...

// then later
final Parent aChild1 = objectMap.get(1).newInstance()

关于java - 在不知道 Java 类名称的情况下调用类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35390471/

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