Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编写getter和setter的不同方法?_Java - Fatal编程技术网

Java 编写getter和setter的不同方法?

Java 编写getter和setter的不同方法?,java,Java,我见过使用this和不使用this的访问器方法。它们产生相同的结果吗 例如: public setName(string name){ this.name=name; } public setName(string n){ name=n; } public void getName{ return name; } public void getName{ // is "this" here useless? return this.name; }

我见过使用
this
和不使用this的访问器方法。它们产生相同的结果吗

例如:

public setName(string name){
    this.name=name;
}

public setName(string n){
    name=n;
}

public void getName{
    return name;
}

public void getName{
    // is "this" here useless?
    return this.name;
}

有什么区别?哪种方法更好?

当您想要引用与方法中的局部变量同名的类级变量时,需要使用
this
。仅当变量具有相同名称时才需要此选项。如果愿意,您可以随时使用
,但这不是必需的。两者的区别是什么

this.s = s;


是的,它们的功能和产生的字节码(afaik)完全相同

“this”关键字仅在引用实例变量(使用类或相关超类定义的非静态变量)时使用,以便将其与同名的局部变量区分开来。在这种情况下,省略“this”关键字会将局部变量分配给自身

关于更好的编辑,有些人不喜欢命名相同的变量,但有些人喜欢使用“this”来显式引用实例变量。归根结底,这是一个品味和可读性的问题。

这是一样的。 如果您的方法有一个与类字段同名的变量(例如“name”),您需要写“this.name”来引用类字段,因为只写“name”是指方法变量

因此,在您编写的第二个示例中,您有两个不同的名称(“name”和“n”),您不需要写“this.name”。 顺便说一句,在第二个例子中,如果你愿意,你可以自由地说“this.name”,但这不是强制性的。。。(在我看来,这不是强制性的,但它是一种使代码更易于阅读的好方法)

最后选择你喜欢的方法。 在我看来,第一种是更“优雅”的代码编写方式

s = myString;