我从编译器得到这个警告,这根本没有意义(至少对我来说)。它基本上想让我给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
Thanks in advance
自Java 7以来,DefaultListModel
是泛型类型,如List
, Set
等。它需要一个类型:DefaultListModel<SomeClass>
而不是原始的DefaultListModel
。
这允许以更类型安全的方式工作,因为您将无法将String插入到应该包含Integer实例的列表模型中。当从模型中获取元素时,您不必强制转换为Integer。
对于JList
也是如此,它现在也是字符串的JList
或整数的JList
,而不是原始的JList
。
阅读关于泛型的教程,看看DefaultListModel的javadoc。
Try @SuppressWarnings("rawtypes")
当使用反射或使用接口方法时,这是一个特别糟糕的默认值,在这种情况下,泛型对象的确切类型应该是隐藏的。当我想起@Suppress时,我开始将Class引用更改为Class。
如果有人在NetBeans IDE(7.0.1)生成的代码(用于JList等)中寻找这些警告,而您不知道如何纠正它,请遵循以下步骤:
- 进入GUI编辑器(matisse builder)。
- 选择(点击)组件(JList等)
- 转到属性窗口,到代码选项卡
- 写
到类型参数属性。当然,"某物"可能是字符串,或者你的对象…