gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:54:00 27 4
gpt4 key购买 nike

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

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

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

objectMap.put(1, myChild1);
objectMap.put(2, myChild2);
//Place all the 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

Parent finalObject;

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

finalObject = objectMap.get(number);

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

如何避免调用两个构造函数?

由于仅使用 myChild1 或 myChild2 并且构造函数方法非常昂贵,因此我只想调用实际使用的方法。

类似的东西

finalObject.callConstructor();

最后一行

有什么想法吗?

提前致谢。

编辑:我想知道的是如何在不知道类名的情况下调用构造函数。检查更新后的代码。

最佳答案

这个怎么样?

Parent finalObject;

if (condition) {
finalObject = new Child1();
} else {
finalObject = new Child2();
}

或者,更好的是,这个?

Parent finalObject = condition? new Child1() : new Child2();

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

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