爪哇 - 'this'运算符



我有一个关于Java中这个运算符的问题。在程序员编写如下代码的情况下:

private int counter;
public Incrementor(int counter){
this.counter = counter;
}

它会更好地避免阴影效应,并采用这个:

private int counter;
public Incrementor(int startValue){
counter = startValue;
}

这个操作符不会让这个操作符在未来的编程执行中过时吗?

"this"关键字非常有用。你的例子很清楚,但想象一下你必须将一个自引用传递给外部对象的另一个方法的情况。

this是对当前对象的引用。在您的示例中,this.counter表示类中定义的计数器变量,方法参数counter是构造函数的局部变量。

这里的主要思想是明确提到您正在使用当前对象的变量。因此,它提高了代码的可读性和可理解性。

你还应该知道this不是一个运算符。。。它是对当前对象的引用。

this用于更多场景:

  • 它允许区分局部变量和字段
  • 它允许将对象作为参数传递给方法foo.add(this)
  • 它允许从内部类引用当前对象:Outerclass.this
  • 它用于调用同一类的其他构造函数:this()

这是一个偏好问题,但大多数程序员更喜欢使用相同名称的便利性。记住用this引用类变量有困难吗?

在第一个示例中没有阴影。this是一种非常明确的引用类变量的方法。

在我看来,这只是对类变量进行编程时的良好编程实践问题。

类似于的代码

private int counter;
public Incrementor(int counter){
this.counter = counter;
}

与。

private int counter;
public Incrementor(int startValue){
counter = startValue;
}

把它外推到10行,第一行可读性更强。此外,它还使重构代码变得更容易。

否则,"这个"就有特殊的意义。关键字"this"指的是类中的当前对象,符合面向对象的原则。在getter和setter的情况下,它可能非常有用和有意义。

添加:

一旦您开始处理继承,您会注意到另一个名为"super"的关键字,它可以显著区分类中继承的属性和本地属性。

在小方法中,通常更清楚的是将参数的名称与将要分配给的成员的名称相同。如果使用较大的方法,这可能会变得令人困惑。但是,您需要评估正确的决定是更改参数的名称还是将方法分解为子函数。

我会使用第一个。它使代码可读性更强此外,您应该将方法命名为setCounter(),因为这也有助于可读性

另一个不相关的点是,要坚持使用Methods部分中概述的Java编码约定来命名方法。

编辑:那不是一个方法,是吗?哎呀!

有时,您需要传递对象本身。那就是你使用this的时候。

最新更新