warning: [rawtypes] found raw type: DefaultListModel



我从编译器得到这个警告,这根本没有意义(至少对我来说)。它基本上想让我给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)。
  1. 选择(点击)组件(JList等)
  2. 转到属性窗口,到代码选项卡
  3. 到类型参数属性。当然,"某物"可能是字符串,或者你的对象…

相关内容

  • 没有找到相关文章

最新更新