3

我有一个类,它扩展了一个 Swing 组件,例如:

public class MyCustomClass extends JComboBox

这里的问题是我收到编译器警告:

JComboBox 是一种原始类型。应该参数化对泛型类型 JComboBox 的引用

我不确定是否对 JComboBox 进行参数化,以便从这里进一步扩展的任何类都可以使用任何类型的对象。我试图把它作为扩展 JComboBox 等等,但这不起作用。任何建议,将不胜感激。

4

4 回答 4

6

如果对 JComboBox 的类型参数没有限制,那么您可以使用:

public class MyCustomClass<T> extends JComboBox<T>

如果我没记错语法。

于 2012-10-05T00:42:13.300 回答
4

泛型影响模型中预期的数据类型。从长远来看,这是一个很好的功能,但可能意味着一些短期的痛苦。

你有两个我能想到的选择。

首先,构建您的自定义类,以便它允许泛型通过......

public class MyCustomClass<E> extends JComboBox<E>

其次,传递一个Object作为组合框的数据类型

public class MyCustomClass extends JComboBox<Object>

(或者第三,将自定义组合框限制为预定义的数据类型,以实现其构建目的)

于 2012-10-05T00:45:26.170 回答
3

该参数是您想要在 ComboBox 中的对象类型。

您的选择是:

A: MyCustomClass总是期望相同类型的对象,所以你可以这样做:

public class MyCustomClass extends JComboBox<String>

或者

B: MyCustomClass仍然没有“足够深”到树下以知道它将处理的类的类型。所以你也是:

public class MyCustomClass<T> extends JComboBox<T>
于 2012-10-05T00:42:42.747 回答
2

JComboBox在 Java 7 中成为泛型类,例如,您应该告诉编译器JComboBox实例中的对象类型。所以你可以让你的类泛型,或者指定JComboBox.

于 2012-10-05T00:42:35.717 回答