java - '.class' 属性如何工作?

标签 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);
}

小问题:

.class 属性有什么作用,f.ex。在'c = NewTourny.class'?

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

长问题:

这目前处理整个我的应用程序中的所有按钮导航,并且工作正常。但是,如您所见,我抑制了“原始类型”警告,当我将 c 转换为 Class 时会出现这种警告。 现在,我真的想要一个没有警告的代码,所以我想'好吧,所有这些类都是'Tourny'的 child ',所以我认为它可以工作,将 c 转换为 Tourny - 但这不起作用。然后我意识到,我真的不知道代码“NewTourny.class”实际上做了什么,这可能是为什么我不能将 c 转换为 Tourny 的线索。那么,.class 有什么作用呢?

最佳答案

它并没有真正太多。 NewTourney.class更多的是一种特定于语言的方式来编写“NewTourney 的类的对象”。这个速记允许人们引用 class of a NewTourney ,而不是处理 NewTourney 的特定已经存在实例.

在您的具体情况下,我敢猜测 Activity最终创建一个的实例来处理 Action ,或者至少保存 Action 的上下文敏感数据。

关于java - '.class' 属性如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076629/

相关文章:

Java重载方法选择

java - 禁用 WebView 链接在模拟器上有效,但在设备上无效

Java:检测对象名称?

具有常量构造函数参数的 C++ 变量构造函数方法

java - 强制 Hibernate 插入而不使用 Select 语句

java - 如何判断 MediaPlayer 是否正在播放?

Android Kotlin 创建类实现 Parcelable 在 writeToParcel 方法的 'override' 中报错

c++ - 访问重载的模板函数

java - Spring Boot 在 WebSocket 上使用 Stomp : Handshake failed due to invalid Upgrade header: null

android - 按不在结果集中的术语排序