我一直在阅读一些东西并做一些关于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并得到各种答案!
答案 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中,Button
是View
Button
。您可以View
View
和Button
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)
this
是对当前对象实例的引用。因此,如果您正在为课程MyClass
编写方法,this
是MyClass
的当前实例。
请注意,在您的情况下,写this.findViewById(...)
并不是必需的,可能会被视为不良风格。
答案 5 :(得分:0)
查看此链接是否有助于您更好地理解“此” -
http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html