Java 无法从泛型超类中识别子类
我试图只允许Interactive方法使用特定的类。代码不编译,也不识别作为超类一部分的基础类 Im使用以下结构:Java 无法从泛型超类中识别子类,java,generics,Java,Generics,我试图只允许Interactive方法使用特定的类。代码不编译,也不识别作为超类一部分的基础类 Im使用以下结构: 抽象类可交互 抽象类构建扩展了可交互 抽象类容器构建扩展了构建 类切割机扩展集装箱运输 为什么下面的代码不能编译?Cutter.class未被识别为建筑类 public static void main ( String[] args ) { ActionTest.<Building>interact ( Cutter.class );
- 抽象类可交互
- 抽象类构建扩展了可交互
- 抽象类容器构建扩展了构建
- 类切割机扩展集装箱运输
public static void main ( String[] args ) {
ActionTest.<Building>interact ( Cutter.class );
}
public static <T extends Interactable> void interact ( Class<T> interactableClass ) {
// do something
}
publicstaticvoidmain(字符串[]args){
ActionTest.interact(cuter.class);
}
公共静态void interact(类interactiableclass){
//做点什么
}
也不编译:
public static void main ( String[] args ) {
ActionTest.interact ( Cutter.class );
}
public static void interact ( Class<Interactable> interactableClass ) {
// do something
}
publicstaticvoidmain(字符串[]args){
ActionTest.interact(cuter.class);
}
公共静态void interact(类interactiableclass){
//做点什么
}
在第一个示例中,将可交互类的类型更改为类在第一个示例中,将可交互类的类型更改为类您需要更改方法的签名才能接受有效的类是。T和?之间有什么区别?您需要更改方法的签名以接受有效的ClassYes。T和?之间有什么区别?
public static <T extends Interactable> void interact ( Class<? extends T> interactableClass )