我有一个类,它扩展了一个 Swing 组件,例如:
public class MyCustomClass extends JComboBox
这里的问题是我收到编译器警告:
JComboBox 是一种原始类型。应该参数化对泛型类型 JComboBox 的引用
我不确定是否对 JComboBox 进行参数化,以便从这里进一步扩展的任何类都可以使用任何类型的对象。我试图把它作为扩展 JComboBox 等等,但这不起作用。任何建议,将不胜感激。
如果对 JComboBox 的类型参数没有限制,那么您可以使用:
public class MyCustomClass<T> extends JComboBox<T>
如果我没记错语法。
泛型影响模型中预期的数据类型。从长远来看,这是一个很好的功能,但可能意味着一些短期的痛苦。
你有两个我能想到的选择。
首先,构建您的自定义类,以便它允许泛型通过......
public class MyCustomClass<E> extends JComboBox<E>
其次,传递一个Object
作为组合框的数据类型
public class MyCustomClass extends JComboBox<Object>
(或者第三,将自定义组合框限制为预定义的数据类型,以实现其构建目的)
该参数是您想要在 ComboBox 中的对象类型。
您的选择是:
A: MyCustomClass
总是期望相同类型的对象,所以你可以这样做:
public class MyCustomClass extends JComboBox<String>
或者
B: MyCustomClass
仍然没有“足够深”到树下以知道它将处理的类的类型。所以你也是:
public class MyCustomClass<T> extends JComboBox<T>
JComboBox
在 Java 7 中成为泛型类,例如,您应该告诉编译器JComboBox
实例中的对象类型。所以你可以让你的类泛型,或者指定JComboBox
.