我在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();
}
}
}
答案 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 *中执行以下操作:
当您重新打开eclipse时,不应再列出这些特定警告。
*对于此示例解决方案,我使用Eclipse IDE for Java Developers - Version:Mars.2 Release(4.5.2)