Java 无法从泛型超类中识别子类

Java 无法从泛型超类中识别子类,java,generics,Java,Generics,我试图只允许Interactive方法使用特定的类。代码不编译,也不识别作为超类一部分的基础类 Im使用以下结构: 抽象类可交互 抽象类构建扩展了可交互 抽象类容器构建扩展了构建 类切割机扩展集装箱运输 为什么下面的代码不能编译?Cutter.class未被识别为建筑类 public static void main ( String[] args ) { ActionTest.<Building>interact ( Cutter.class );

我试图只允许Interactive方法使用特定的类。代码不编译,也不识别作为超类一部分的基础类

Im使用以下结构:

  • 抽象类可交互

  • 抽象类构建扩展了可交互

  • 抽象类容器构建扩展了构建

  • 切割机扩展集装箱运输

为什么下面的代码不能编译?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 )