Java 如何将一个有界泛型类型扩展到另一个有界泛型类型?

Java 如何将一个有界泛型类型扩展到另一个有界泛型类型?,java,generics,Java,Generics,令人不快的是: public class InputField<W extends WidgetInterface> extends InputFieldArray<W extends WidgetInterface> 但是,如果我这样做,编译器会抱怨第二个W不在其范围内。我做错了什么?根据您的评论,您应该: public class InputField<W extends Component &

令人不快的是:

public class InputField<W extends WidgetInterface>
                             extends InputFieldArray<W extends WidgetInterface>

但是,如果我这样做,编译器会抱怨第二个
W
不在其范围内。我做错了什么?

根据您的评论,您应该:

public class InputField<W extends Component & WidgetInterface>
extends InputFieldArray<W>
公共类输入字段
扩展InputFieldArray
编译器错误是不言自明的:如果不给出
W
组件的上界和
WidgetInterface
,它就不在
InputFieldArray
的类型参数的范围内


您的第一个代码片段只是一个语法错误:您只在声明中指定类型参数的边界。

根据您的注释,您应该执行以下操作:

public class InputField<W extends Component & WidgetInterface>
extends InputFieldArray<W>
公共类输入字段
扩展InputFieldArray
编译器错误是不言自明的:如果不给出
W
组件的上界和
WidgetInterface
,它就不在
InputFieldArray
的类型参数的范围内


您的第一个代码片段只是一个语法错误:您只在声明中指定类型参数的边界。

编译器有权抱怨

您已经说过,
InputFieldArray
的泛型参数必须是
组件和
WidgetInterface
的子类。但是,您试图声明
InputField
只接受一个
WidgetInterface
参数

这无法编译,否则有人可能会创建一个带有非
组件的泛型参数的
InputField
。这与它的超类不一致——类型安全性将被破坏(因为转换将在运行时失败),这破坏了泛型的整个要点

您需要在子类中应用相同的约束(或更严格的约束):

public class InputField<W extends Component & WidgetInterface>
             extends InputFieldArray<W>
公共类输入字段
扩展InputFieldArray

编译器抱怨是对的

您已经说过,
InputFieldArray
的泛型参数必须是
组件和
WidgetInterface
的子类。但是,您试图声明
InputField
只接受一个
WidgetInterface
参数

这无法编译,否则有人可能会创建一个带有非
组件的泛型参数的
InputField
。这与它的超类不一致——类型安全性将被破坏(因为转换将在运行时失败),这破坏了泛型的整个要点

您需要在子类中应用相同的约束(或更严格的约束):

public class InputField<W extends Component & WidgetInterface>
             extends InputFieldArray<W>
公共类输入字段
扩展InputFieldArray

我很确定有更好的方法来做任何你想做的事情,而不需要所有这些泛型。你能告诉我们
InputFieldArray
的定义吗?你想要整个类文件吗
InputFieldArray
被声明为
public class InputFieldArray Extendes JPanel
我很确定有更好的方法来做你想做的任何事情,而不需要所有这些泛型。你能告诉我们
InputFieldArray
的定义吗?你想要整个类文件吗
InputFieldArray
声明为
公共类InputFieldArray扩展JPanel