2011-10-19 37 views
3

我收到了編譯器的警告,根本沒有任何意義(至少對我來說)。它基本上要我分配一個Type到DefaultListModel,它本身就是一個對象類型!我通過我的代碼得到了這些警告的堆!警告:[rawtypes]發現原始類型: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 

預先感謝

回答

9

由於Java 7,DefaultListModel是一個通用的類型,如ListSet等,這需要一個類型:DefaultListModel<SomeClass>而不是原始DefaultListModel

這允許以更安全的方式工作,因爲您無法將字符串插入到應該包含Integer實例的列表模型中。從模型中獲取元素時,您不必投射到Integer。

這同樣適用於JList真這也是現在字符串的JList或整數的JList,而不是作爲一個原始JList

閱讀tutorial about generics,看看javadoc of DefaultListModel

+0

非常感謝你的準確和現場答案!我從舊的api文檔引用,並不知道你指出我曾經存在過的那個!你救了我的一天! – Sam

+0

由於我爲OpenJDK貢獻了這個補丁,我在這裏發佈了博客:http://puces-blog.blogspot.com/2009/11/news-swing-generics-openjdk-jlist-patch.html – Puce

+0

@Puce非常感謝: - ) – mKorbel

1

如果有人正在尋找在NetBeans IDE這些警告(7.0.1)中產生(JList的等)的代碼,你不知道,如何糾正它,請按照下列步驟操作:

  1. 轉到GUI編輯器(matisse builder)。
  2. 選擇(點擊)組件(JList的等)
  3. 進入屬性窗口,到代碼標籤
  4. 寫<東西>到類型參數應用性能。當然,「東西」是字符串,或者你的對象...
1

嘗試@SuppressWarnings(「rawtypes」)

這是一個特別可怕的默認與反思工作或接口操作的時候方法,其中通用對象的確切類型應該隱藏。當我記得@Suppress時,我開始將Class引用更改爲Class。

相關問題