2013-12-08 57 views
2

我在我的ListActivity獲得的警告。我得到的警告如下所示爲什麼我得到警告:類是一種原始類型。引用泛型類型類<T>應進行參數化「?

  • Class is a raw type. References to generic type Class<T> should be parameterized

它不產生任何問題,但我想知道爲什麼我得到這個警告以及如何抑制它。看到寫在星號內的行。

public class Menu extends ListActivity { 

    String classes[]={"Second","example1","example2","example3","example4"}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(Menu.this,android.R.layout.simple_list_item_1,classes)); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 
     String cheese=classes[position]; 
     try{ 
     **Class ourclass= Class.forName("com.app1."+cheese);** 
     Intent ourintent= new Intent(Menu.this,ourclass); 
     startActivity(ourintent); 
     }catch(ClassNotFoundException e){ 
      e.printStackTrace(); 
     } 
    } 
} 

回答

3

你可以使用@SuppressWarnings("rawtypes","unchecked")。您也可以使代碼

Class<?> ourclass= Class.forName("com.app1."+cheese); 

擺脫警告。現在,您不必使用@SuppressWarnings("rawtypes")。編譯器期望所有的泛型類型是參數化

7

類是通用的,如果你不關心你有兩個選擇使用@SuppressWarnings("rawtypes")警告或我的偏好使用<?>(這是一個wildcard capture)這樣

Class<?> ourclass = Class.forName("com.app1."+cheese); 
+0

誰能告訴我,警告的原因是什麼? – hemkar

+0

是的。由於[Class.forName()]的完整簽名(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#forName%28java.lang.String%29 )是'public static Class forName(String className)引發ClassNotFoundException'。 –

1

忽略警告「級是一種原始類型......」請執行下列操作在Eclipse *:

  1. 點擊窗口 - 首選項 - Java的編譯器錯誤/警告
  2. 單擊「泛型類型」
  3. 選擇「忽略」的「原始類型的使用」
  4. 單擊應用
  5. 單擊確定
  6. 保存並關閉您的Eclipse IDE

當您重新打開日食,這些特定警告不應再列出。

*對於本例的解決方案我使用的Eclipse IDE的Java開發者 - 版本:Mars.2版本(4.5.2)

相關問題