警告:[rawtypes]找到原始类型:DefaultListModel

时间:2011-10-19 14:46:18

标签: java swing generics netbeans jlist

我从编译器收到这个警告,这根本没有意义(至少对我而言)。它基本上要我将Type分配给DefaultListModel,它本身就是一个对象类型!我通过我的代码获得了大量的警告!

C:\Documents and Settings\...\filename.java:345:warning: [rawtypes] found raw type: DefaultListModel
DefaultListModel lm = (DefaultListModel) jList_DataSetList.getModel();
missing type arguments for generic class DefaultListModel<E>
where E is a type-variable:
E extends Object declared in class DefaultListModel

这是另一个我不知道从哪里来的!

C:\Documents and Settings\...\filename.java:897: warning: [rawtypes] found raw type: JList
private javax.swing.JList jList_DataSetList;
missing type arguments for generic class JList<E>
where E is a type-variable:
E extends Object declared in class JList

提前致谢

3 个答案:

答案 0 :(得分:10)

从Java 7开始,DefaultListModel是一种通用类型,如ListSet等。它需要一种类型:DefaultListModel<SomeClass>而不是原始DefaultListModel }。

这允许以更加类型安全的方式工作,因为您将无法将String插入到应该包含Integer实例的列表模型中。从模型中获取元素时,您不必转换为Integer。

同样适用于JList,现在也是字符串JList或整数JList,而不是原始JList

阅读tutorial about generics,并查看javadoc of DefaultListModel

答案 1 :(得分:1)

如果有人在NetBeans IDE(7.0.1)生成的代码中查找这些警告(对于JList等)并且您不知道如何更正它,请按照以下步骤操作:

  1. 转到GUI编辑器(matisse builder)。
  2. 选择(单击)组件(JList等)
  3. 转到“属性”窗口,转到“代码”选项卡
  4. 写下&lt; Something&gt;进入Type Parametres属性。当然,“Something”将是String,或者你的对象......

答案 2 :(得分:1)

尝试@SuppressWarnings(&#34; rawtypes&#34;)

使用反射或使用接口方法时,这是一个特别糟糕的默认值,其中应该隐藏通用对象的确切类型。当我记得@Suppress时,我开始将Class引用更改为Class。