我从编译器收到这个警告,这根本没有意义(至少对我而言)。它基本上要我将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
提前致谢
答案 0 :(得分:10)
从Java 7开始,DefaultListModel
是一种通用类型,如List
,Set
等。它需要一种类型:DefaultListModel<SomeClass>
而不是原始DefaultListModel
}。
这允许以更加类型安全的方式工作,因为您将无法将String插入到应该包含Integer实例的列表模型中。从模型中获取元素时,您不必转换为Integer。
同样适用于JList
,现在也是字符串JList
或整数JList
,而不是原始JList
。
答案 1 :(得分:1)
如果有人在NetBeans IDE(7.0.1)生成的代码中查找这些警告(对于JList等)并且您不知道如何更正它,请按照以下步骤操作:
答案 2 :(得分:1)
尝试@SuppressWarnings(&#34; rawtypes&#34;)
使用反射或使用接口方法时,这是一个特别糟糕的默认值,其中应该隐藏通用对象的确切类型。当我记得@Suppress时,我开始将Class引用更改为Class。