gpt4 book ai didi

java - 子类无法从通用父类(super class)中识别

转载 作者:行者123 更新时间:2023-12-02 01:12:28 25 4
gpt4 key购买 nike

我试图只允许交互方法使用特定的类。该代码无法编译,也无法识别底层类是父类(super class)的一部分。

我使用以下结构:

  • 抽象类可交互

  • 抽象类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
}

最佳答案

在第一个示例中,更改 interactableClass 的类型至Class<? extends T> :

public static <T extends Interactable> void interact ( Class<? extends T> interactableClass )

这是因为 Java 中的泛型是不变的,这意味着您不能传递除 Class<Building> 之外的任何内容。当您将该方法调用为 <Building>interact(...) 时如果参数声明为 Class<T> .

关于java - 子类无法从通用父类(super class)中识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59174370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com