'.class'属性如何工作?

Lon*_*Int 20 java android class

第一次用Java开发,第一次开发Android,所以这是一个相当新的问题.

我目前有这个代码:

public void onBtnClicked(View v){
    /** Handles button navigation */

    @SuppressWarnings("rawtypes")
    Class c;
    int viewId = v.getId();

    switch (viewId) {

    case R.id.btnNewTourny :
        c = NewTourny.class;
        break;
    case R.id.btnTeamEditor :
        c = EditTeam.class;
        break;
    case R.id.btnCatEditor :
        c = EditCat.class;
        break;
    case R.id.btnLoadTourny :
        c = EditCat.class;
        break;
    case R.id.btnNewCategory :
        c = NewCat.class;
        break;
    default :
        c = Main.class;
    }

    Intent myIntent = new Intent(v.getContext(), c);
    startActivityForResult(myIntent, 0);
}
Run Code Online (Sandbox Code Playgroud)

简短的问题:

什么是的.class属性来完成,f.ex. 在' c = NewTourny .class '?

为什么我不能将c转换为Tourny(这是所有这些类的父级)?

长问题:

这当前处理我的应用程序中的所有按钮导航,并且工作正常.但是,正如您所看到的,我已经抑制了一个'rawtype'警告,当我将c作为一个类转换时.现在,我真的想要一个没有警告的代码,所以我想'好吧,所有这些类都是'Tourny'的孩子,所以我认为它会起作用,把c作为Tourny - 但这不起作用.然后我意识到,我真的不知道代码"NewTourny.class"实际上做了什么,这可能是为什么我不能把c作为Tourny的线索.那么,.class做什么?

Edw*_*uck 11

它并没有真正多少. NewTourney.class更像是一种语言特定的方式来编写"作为类的对象NewTourney".这个简写允许人们引用a 的NewTourney,而不是处理特定的已存在的实例NewTourney.

在您的特定情况下,我会冒险猜测Activity最终会创建一个的实例来处理操作,或者至少保存操作的上下文敏感数据.

  • 试试Class <?延伸Tourny> (2认同)