首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将"this“与类名一起使用

将"this“与类名一起使用
EN

Stack Overflow用户
提问于 2010-11-03 02:23:24
回答 5查看 32.8K关注 0票数 119

我正在做安卓编程,正在学习意图,这时我看到了一个构造器,在我接受过C#培训的头脑中,它似乎很时髦。电话是:

代码语言:javascript
复制
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

这两个参数对我来说都是新的。类名怎么会有一个静态的".this“呢?这是Java的事情还是Android的事情?我假设这与只说"this“是一样的,因为我在CurrentActivity的上下文中,但我不明白如何从类名本身调用"this”。还有。".class“看起来像是用来反射的,我在C#中很熟悉,但对此的任何见解都将受到欢迎。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-03 02:29:03

通常,您只能使用this。但是,有时this会引用内部类...所以,举个例子:

代码语言:javascript
复制
Button button = (Button)findViewById(R.id.ticket_details_sell_ticket);
button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // it will be wrong to use only "this", because it would
        // reference the just created OnClickListener object
        Intent login = new Intent(ClassName.this, Login.class);
        startActivityForResult(login, LOGIN_REQUEST);
    }
});
票数 143
EN

Stack Overflow用户

发布于 2010-11-03 02:32:58

一次一个:

第一个构造称为qualified this。语法的用途是在内部类(通常是匿名内部类)中,并且希望引用外部类的this而不是(匿名)内部类的this。"qualified this“只能在this不明确的上下文中使用。JLS的引号是“如果表达式出现在一个类或接口中,而这个类或接口不是T类或T类本身的内部类,那么这是一个编译时错误”。

第二个构造称为class literal,它是引用表示该类型的类对象的方式。它可以在任何上下文中使用。

票数 65
EN

Stack Overflow用户

发布于 2010-11-03 02:27:35

语法"Classname.this“用于内部类。如果你想引用"Outerclass“类型的封闭实例,那么你就把它当作"Outerclass.this”。

NextActivity.class仅仅是描述类"NextActivity“的类对象。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4080868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档