如何通过不通用的子代从父类正确访问泛型方法?

时间:2016-06-14 14:24:22

标签: java swing generics combobox

我有这个类(称为child),它从Java中的Swing库扩展了JComboBox类。现在,当我创建child的对象并尝试通过传递addItem(Object)来调用方法String时,我收到以下警告:

Type safety: The method addItem(Object) belongs to the raw type JComboBox. References to generic type JComboBox<E> should be parameterized.

调用此方法的正确方法是什么?我无法使用child的泛型类型实例化<String>,因为child不是通用的;我不知道如何做到这一点。任何帮助将不胜感激。

PS。更改child的内容不是一种选择。

1 个答案:

答案 0 :(得分:0)

您想要的是让您的孩子成为JComboBox<String>的孩子,而不仅仅是JComboBox。这将停止弹出的小警告。

示例:

public class Child extends JComboBox<String>{

}

执行此操作时,所有通用方法,字段等现在都是String而不是Object

编辑:

我看到你说你不能改变孩子班级。这使事情变得相当困难。

实际上没有直接的方法,即使是变通办法最终仍会显示此警告。您可以使用一个选项(我可以看到)在产生警告的代码上方使用@SuppressWarnings("unchecked")注释。这将阻止警告显示。