我正在做安卓编程,正在学习意图,这时我看到了一个构造器,在我接受过C#培训的头脑中,它似乎很时髦。电话是:
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
这两个参数对我来说都是新的。类名怎么会有一个静态的".this“呢?这是Java的事情还是Android的事情?我假设这与只说"this“是一样的,因为我在CurrentActivity
的上下文中,但我不明白如何从类名本身调用"this”。还有。".class“看起来像是用来反射的,我在C#中很熟悉,但对此的任何见解都将受到欢迎。
谢谢。
发布于 2010-11-03 02:29:03
通常,您只能使用this
。但是,有时this
会引用内部类...所以,举个例子:
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);
}
});
发布于 2010-11-03 02:32:58
一次一个:
第一个构造称为qualified this。语法的用途是在内部类(通常是匿名内部类)中,并且希望引用外部类的this
而不是(匿名)内部类的this
。"qualified this“只能在this
不明确的上下文中使用。JLS的引号是“如果表达式出现在一个类或接口中,而这个类或接口不是T类或T类本身的内部类,那么这是一个编译时错误”。
第二个构造称为class literal
,它是引用表示该类型的类对象的方式。它可以在任何上下文中使用。
发布于 2010-11-03 02:27:35
语法"Classname.this“用于内部类。如果你想引用"Outerclass“类型的封闭实例,那么你就把它当作"Outerclass.this”。
NextActivity.class仅仅是描述类"NextActivity“的类对象。
https://stackoverflow.com/questions/4080868
复制相似问题