1

我最近才开始学习 Java。我有一个更多关于Java中使用的约定的问题......

所以假设我有A类:

public class A {
  public void methodA{
    methodB();
  }

  private void methodB{
  }
}

有时我看到有些人使用this(例如this .methodB(); )在类中调用私有方法,即使没有歧义。是明确向人们展示他们正在调用私有方法还是只是某人的“风格”

4

3 回答 3

2

就其本身而言,使用this并没有说明太多。它可以指向:

  • 实例字段(或方法)或 的内部类this,无论其可见性如何。
  • 的类继承的类之一的静态字段或方法或嵌套this类。(在这种情况下通常会有一个警告,但它只是一个警告)。

它确实防止的是:

  • 静态导入
  • 局部变量
  • 类导入(如果您有一个与导入类同名的嵌套类)

我要强调的是,它根本不能保证调用的方法是私有的。

这是我第一次听说这条规则——我怀疑它至多是公司的(不是那么有用的)风格规则。

于 2010-10-28T08:15:18.917 回答
1

那只是风格。就个人而言,我喜欢在访问成员时过于明确,但我也可以理解人们觉得它很难看,特别是如果您使用内部类的外部类的方法或属性:

 public class Outer {

       private SomeType member;

       private class Inner {
          public void innerMethod() {
              Outer.this.member.someFunction();
          }
       }
 }

在极少数情况下,您稍后会在没有注意到的情况下引入名称阴影问题,这可能会有所帮助 - 突然间您调用了错误的函数或访问了错误的变量。尽管如此,限定与this是冗长的,这不是一般规则。

于 2010-10-28T08:21:47.190 回答
0

有点离题,因为我们不是在处理私有方法,而是私有类变量,但值得一提的是,有时this有必要防止歧义:

public class Example {

  private RowMapper rowMapper;

  public void setRowMapper(RowMapper rowMapper) {
    this.rowMapper = rowMapper;
  }
}

总的来说,没有歧义的地方this就是多余的语法。

于 2010-10-28T09:18:40.053 回答