使用this访问属性的区别.Java中的someProperty vs someProperty



这个问题不是重复的

这个问题与"This"在Java中的含义无关。这是一个关于属性的不同语法的问题,我正试图根据我对另一种语言的理解来澄清。我一直在通过android文档工作,看到相同的属性引用不同,我想知道为什么。

问题

在Objective-C中,当声明属性时,它会自动合成getter和setter,然后通过点语法进行访问,如下所示:

self.someProperty;
然而,在后台,这实际上是在调用:
[self someProperty];
- (id) someProperty {
    return _someProperty;
}
// or
[self setSomeProperty:someValue];
- (void) setSomeProperty:(id)someProperty {
    _someProperty = someProperty;
}

自动合成的一部分还生成一个带有'_'前缀的变量,您可以直接访问该变量。总结一下,

_someProperty;
// and
self.someProperty;

通常指同一变量;然而,实际上,self.someProperty调用该方法,而_someProperty直接访问内存。在Java中,如果我在文件的顶部像这样声明一个属性:

private String someStringProperty;

是否有某种自合成在后台使这些语句不同?

someStringProperty = new String();
// or
this.someStringProperty = new String();

没有区别。当你使用"this"时,你是在使用这个对象。使用"this"不是进行方法调用。

someStringProperty = new String();
// or
this.someStringProperty = new String();

这两个语句相等。使用"this"只是为了让它更容易读。

在Java中,this指的是"当前"对象,即被调用的方法或构造函数所属的对象。通常,您将使用this.someProperty而不仅仅是someProperty来区分局部变量和对象的属性(参见http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html的示例)。

最新更新