【发布时间】:2025-12-11 02:40:01
【问题描述】:
我试图只允许交互方法使用特定的类。该代码无法编译并且无法将底层类识别为超类的一部分。
我使用以下结构:
抽象类可交互
抽象类Building扩展了Interactable
抽象类 ContainerBuilding 扩展 Building
Cutter 类扩展 ContainerBuidling
为什么下面的代码不能编译? 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
}
也不编译:
public static void main ( String[] args ) {
ActionTest.interact ( Cutter.class );
}
public static void interact ( Class<Interactable> interactableClass ) {
// do something
}
【问题讨论】:
-
您需要更改方法的签名以接受
Class<? extends Interactable>。可以改一下interact的签名吗? -
是的,行得通。 T 和 ?.. 有什么区别?