在我的代码中,a有以下抽象超类
public abstract class AbstractClass<Type extends A> {...}
和一些儿童班一样
public class ChildClassA extends AbstractClass<GenericTypeA> {...}
public class ChildClassB extends AbstractClass<GenericTypeB> {...}
我正在寻找一种优雅的方式,我可以通用的方式在抽象类中使用子类的泛型类型(GenericTypeA,GenericTypeB,...) .
为了解决这个问题,我目前定义了这个方法
protected abstract Class<Type> getGenericTypeClass();
在我的抽象类中实现了该方法
@Override
protected Class<GenericType> getGenericTypeClass() {
return GenericType.class;
}
在每个儿童班 .
是否可以在我的抽象类中获取子类的泛型类型而不实现此帮助器方法?
BR,
马库斯
2 回答
我认为这是可能的 . 我看到这在DAO模式中与泛型一起使用 . 例如考虑课程:
而你的通用类:
你可以有一个类Test1,用类B扩展Test(它扩展了A)
我不确定我是否完全理解你的问题 -
<Type>
是子类的泛型类型,即使它是在抽象类中表达的 . 例如,如果您的抽象超类定义了一个方法:并且实例化
ChildClassA
,您只能使用GenericTypeA
的实例调用augment
.现在,如果你想要一个类文字,那么你需要按照你的指示提供方法 . 但是,如果您只想要通用参数,则无需执行任何特殊操作 .