这是什么意思?

时间:2012-06-06 19:51:14

标签: java android

  

可能重复:
  Java this.method() vs method()

我一直在阅读一些东西并做一些关于android java的教程,但我仍然不明白“这个”是什么意思,就像在下面的代码中一样。

    View continueButton = this.findViewById(R.id.continue_button);
    continueButton.setOnClickListener(this);
    View newButton = this.findViewById(R.id.new_button);
    newButton.setOnClickListener(this);

为什么在这个例子中,按钮没有用Button定义但是用View定义,有什么区别?

PS。很棒的网站!试图通过在这里搜索来学习java并得到各种答案!

6 个答案:

答案 0 :(得分:4)

this关键字为a reference to the current object。它用于传递对象的实例,等等。

例如,这两个分配是相同的:

class Test{

    int a;

    public Test(){
        a = 5;
        this.a = 5;
    }

}

有时您想要访问隐藏字段:

class Test{

    int a;

    public Test(int a){
        this.a = a;
    }

}

您在此处为字段a分配了参数a中的值。

this关键字与方法的工作方式相同。同样,这两个是相同的:

this.findViewById(R.id.myid);
findViewById(R.id.myid);

最后,假设你有一个MyObject类,它有一个采用MyObject参数的方法:

class MyObject{

    public static void myMethod(MyObject object){
        //Do something
    }

    public MyObject(){
        myMethod(this);
    }

}

在最后一个示例中,您将当前对象的引用传递给静态方法。

  

为什么在这个例子中,按钮没有用Button定义但是用View定义,有什么区别?

在Android SDK中,ButtonView Button。您可以View ViewButton Button newButton = (Button) this.findViewById(R.id.new_button); {{1}}请求{{1}}:

{{1}}

答案 1 :(得分:1)

this指的是正在采取行动的对象的实例。

如果您有上述内容,this.findViewById(R.id.continue_button)这是指父类中的方法(特别是Activity.findViewById()View.findViewByid(),假设您正在编写自己的{的子类{1}}或Activity!)。

答案 2 :(得分:0)

“this”是当前的对象实例。

class Blaa
{
   int bar=0;
   public Blaa()
   {}
   public void mogrify(int bar,Blaa that)
   {
       bar=1; //changes the local variable bar
       this.bar=1; //changes the member variable bar. 
       that.bar=1; //changes "that"'s member variable bar. 
   }

}

答案 3 :(得分:0)

this指的是类的当前实例

答案 4 :(得分:0)

Java中的

this是对当前对象实例的引用。因此,如果您正在为课程MyClass编写方法,thisMyClass的当前实例。

请注意,在您的情况下,写this.findViewById(...)并不是必需的,可能会被视为不良风格。

答案 5 :(得分:0)

在面向对象语言(如java)中使用“this”,c#是对要调用方法的对象或要访问其数据的对象的引用。

查看此链接是否有助于您更好地理解“此” -

http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html