将“this”与类名一起使用

2022-08-31 09:00:15

我正在做Android编程,正在学习 Intents,当我看到一个构造函数时,在我的 C# 训练头脑中,它似乎很时髦。电话是:

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

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

谢谢。


答案 1

通常,您只能使用 .但是,有时引用内部类...所以,例如:thisthis

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

答案 2

一次一个:

第一个构造称为限定的 this。语法的目的是在以下情况下:您位于内部类(通常是匿名内部类)中,并且您希望引用外部类的 而不是(匿名的)内部类。“限定的这个”只能在模棱两可的上下文中使用。引用JLS“如果表达式出现在不是类T或T本身的内部类的类或接口中,则为编译时错误”。thisthisthis

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