【发布时间】:2015-09-23 03:51:35
【问题描述】:
例如,我有 A 类,A 有子类 B 和 C,我想随机创建 A、B 或 C,我可以使用这样的条件语句:
A a;
switch(new java.util.Random(3).nextInt()){
case 0:
a=new A();
break;
case 1:
a=new B();
break;
case 2:
a=new C();
break;
}
a.doSomething();
但我想有一个更好的维护版本,易于添加新的子类,然后我尝试使用数组为每个类保存一个 .class 对象,但由于“不兼容的类型”而无法编译:
Class[] array={A.class,B.class,C.class};
A a;
try{
a=array[new java.util.Random(array.length).nextInt()].newInstance();
}catch(Exception e){
}
a.doSomething();
有解决上述问题的语法吗?如果没有,是否有任何通用方式或语法可以在没有 if-else 条件的情况下生成随机子对象?
【问题讨论】:
标签: java class oop generics constructor