为什么我收到警告:Class是原始类型。对泛型类<t>的引用应该参数化为“?</t>

时间:2013-12-08 07:51:04

标签: java android

我在ListActivity收到警告。我得到的警告如下所示

  • 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 个答案:

答案 0 :(得分:12)

类是通用的,如果你不关心警告你有两个选择使用@SuppressWarnings("rawtypes")或我的偏好使用<?>(即wildcard capture)这样

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

答案 1 :(得分:5)

您可以使用@SuppressWarnings("rawtypes","unchecked")。您也可以制作代码

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

摆脱警告。现在,您不必使用@SuppressWarnings("rawtypes")。编译器期望所有泛型类型都被参数化

答案 2 :(得分:1)

忽略警告&#34; Class是原始类型....&#34;在eclipse *中执行以下操作:

  1. 单击Window-Preferences-Java-Compiler-Errors / Warnings
  2. 点击&#34;通用类型&#34;
  3. 选择&#34;忽略&#34; for&#34;使用原始类型&#34;
  4. 点击“应用”
  5. 点击确定
  6. 保存并关闭您的eclipse IDE
  7. 当您重新打开eclipse时,不应再列出这些特定警告。

    *对于此示例解决方案,我使用Eclipse IDE for Java Developers - Version:Mars.2 Release(4.5.2)