繁体   English   中英

Swing组件上的Java 7 Generics

[英]Java 7 Generics on Swing components

我有一个类,它扩展了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中所需的对象类型。

你的选择是:

答: MyCustomClass总是期望相同类型的对象,所以你做的事情如下:

public class MyCustomClass extends JComboBox<String>

要么

B: MyCustomClass在树下仍然“不够深”,无法知道它将使用的类的类型。 所以你也是:

public class MyCustomClass<T> extends JComboBox<T>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM