java - Type Class 是原始类型。对泛型类型 Class<T> 的引用应该参数化

标签 java android class android-activity

Class ActivityItems 工作正常,但我收到警告“Type Class 是原始类型。对通用类型 Class 的引用应该参数化”。如何解决?

这是我的代码:

public class MainActivity extends ListActivity {

    String classes[] = { "AccountActivity", "CountsActivity", "" };
    String listItems[] = { "Accounts", "Counts", "temp" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View layout = findViewById(R.id.container);
        Drawable background = layout.getBackground();
        background.setAlpha(110);

        setListAdapter(new ArrayAdapter<String>(this, 
                android.R.layout.simple_list_item_1, listItems));

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String item = classes[position];
        try {
            Class activityItems = Class.forName("com.arbaz.hk." + item);
            Intent intent = new Intent(this, activityItems);
            startActivity(intent);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

最佳答案

我认为这可能只是改变这一点:

Class activityItems = Class.forName("com.arbaz.hk." + item);

至:

Class<?> activityItems = Class.forName("com.arbaz.hk." + item);

这样你仍然不会说你知道T是什么。在Class<T>是,但您证明您至少知道它是泛型类型,因此编译器不会像其他情况那样从签名等中删除泛型的所有痕迹。

关于java - Type Class 是原始类型。对泛型类型 Class<T> 的引用应该参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790278/

相关文章:

java - 如果今天是星期日,则获取下周的日期

android - 如何从资源 id 获取资源名称

java - 在 JAVA 中使用反射通过 .class 文件实例化对象并调用方法?

c++ - 编译器错误 : No appropriate default constructor avaible

python - 为什么 string.Formatter.format 没有 "self"参数?

java - 如何在 SAML 响应中使用 X509 证书作为公钥

java - 可分发 JAR 不工作

java - 时间戳之谜获取时间差异

java - 游戏包的编码方法?

java - fragment 中的 RecyclerView - 没有连接适配器,跳过布局