Java—通过<;获取抽象类的实例;上课?扩展超类>;带参数
如果标题很模糊,请原谅 请允许我详细说明我的问题: 假设我有一个名为“Car”的类,它是一个抽象类。 现在假设我有多个汽车实例,例如奥迪、沃尔沃、法拉利等 我想将这些实例存储在一个enum类中,这样就可以通过enum轻松地检索它们。然而,问题是每个实例的构造函数中都有一个参数,我不能将其作为枚举中的最终属性。 我需要获取从.class创建的超类(带有1个参数)的实例 伪代码Java—通过<;获取抽象类的实例;上课?扩展超类>;带参数,java,enums,instance,Java,Enums,Instance,如果标题很模糊,请原谅 请允许我详细说明我的问题: 假设我有一个名为“Car”的类,它是一个抽象类。 现在假设我有多个汽车实例,例如奥迪、沃尔沃、法拉利等 我想将这些实例存储在一个enum类中,这样就可以通过enum轻松地检索它们。然而,问题是每个实例的构造函数中都有一个参数,我不能将其作为枚举中的最终属性。 我需要获取从.class创建的超类(带有1个参数)的实例 伪代码 /* This is my super class */ public abstract class Car{ pu
/* This is my super class */
public abstract class Car{
public Car(Object param){ }
}
/* This is my instance */
public class Volvo extends Car{
public Volvo(Object param){
super(param);
}
}
/* This is my other instance */
public class Ferrari extends Car{
public Ferrari(Object param){
super(param);
}
}
上面的代码正确地显示了我创建的类。
好了,现在是enum类:
public enum CarType{
VOLVO(Volvo.class), FERRARI(Ferrari.class);
private Class<? extends Car> instance;
private CarType(Class<? extends Car> instance){
this.instance = instance;
}
/* This is what I tried, NOT working*/
public Car getCarInstance(Object param){
try{
return Car.class.getConstructor(instance).newInstance(param);
}catch(Exception e){
/* I didn't do bugmasking, but all the exceptions would
make this post look messy.*/
}
}
}
公共枚举类型{
沃尔沃(沃尔沃级)、法拉利(法拉利级);
尝试以下操作后getCarInstance更改行中的私有类:
return instance.getConstructor(Object.class).newInstance(param);
您不需要Car.class
,因为您已经在枚举构造函数中指定了类型。顺便说一下,不要调用它的实例,而是调用它的类型
我们开始:
public Car getCarInstance(Object param) {
try {
return type.getConstructor(Object.class).newInstance(param);
} catch (ReflectiveOperationException e) {
throw new IllegalStateException(e);
}
}
第二件事(如您所见)是如何检索正确的构造函数。如果您想了解更多信息,请阅读更多信息。谢谢。谢谢!谢谢,谢谢!