gpt4 book ai didi

Java:如何实现类的切换?

转载 作者:行者123 更新时间:2023-11-30 09:13:10 26 4
gpt4 key购买 nike

如何在 Java 中实现以下伪代码?

Object getInstance(Class<?> type)
{
switch (type)
{
case A.class:
return createA(param1, param2);
case B.class:
return createB(param3, param4, param5);
default:
throw new AssertionError("Unknown type: " + type);
}
}

我知道我可能可以使用 Map<Class<?>, Callable<Object>> 来实现它(将类映射到返回对象的方法)但是是否有更有效/可读的方法来做到这一点?

更新:对于具有误导性的伪代码,我深表歉意。我并不是要暗示这些类具有无参数构造函数。每个类的构造都不同。我知道 if-else 有效,但从效率的角度来看并不是很好。它是 O(n)。

最佳答案

如何使用 Class 对象创建一个新实例?

private static final Set<Class> ALLOWED_CLASSES = 
new HashSet<>(Arrays.asList(A.class, B.class));

Object getInstance(Class<?> type) {
if (!ALLOWED_CLASSES.contains(type)) {
throw new AssertionError("Unknown type: " + type);
}
return type.newInstance();
}

关于Java:如何实现类的切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21129844/

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