我刚刚开始学习Java。我有一个问题更多关于Java中使用的约定......
假设我有A类:
public class A {
public void methodA{
methodB();
}
private void methodB{
}
}
有时我会看到有些人使用这个(例如这个 .methodB();)在课堂内调用私有方法,即使没有歧义。明确地向人们展示他们正在调用私有方法,还是仅仅是某人的'style'。
答案 0 :(得分:2)
使用this
本身并不清楚。它可以指向:
this
的内部类,无论其可见性如何。this
类继承的类之一的静态字段或方法或嵌套类。 (在这种情况下通常会有警告,但这只是一个警告)。它阻止的是:
我要强调的是,它并不能保证所调用的方法是私有的。
这是我第一次听到这条规则 - 我怀疑,它至多是公司的一种(不是那种有用的)风格规则。
答案 1 :(得分:1)
那只是风格。就个人而言,我在某种程度上喜欢在访问成员时过于明确,但我也能理解人们发现它很难看,特别是如果你在内部类中使用外部类的方法或属性:
public class Outer {
private SomeType member;
private class Inner {
public void innerMethod() {
Outer.this.member.someFunction();
}
}
}
在极少数情况下,如果您在不注意的情况下引入名称阴影问题,可能会有所帮助 - 突然之间您正在调用错误的函数或访问错误的变量。尽管如此,使用this
进行排位仍然很详细,而且这不是一般规则。
答案 2 :(得分:0)
稍微偏离主题,因为我们没有解决私有方法,而是私有类变量,但值得一提的是,有时this
是防止歧义所必需的:
public class Example {
private RowMapper rowMapper;
public void setRowMapper(RowMapper rowMapper) {
this.rowMapper = rowMapper;
}
}
总的来说,在没有歧义的情况下,this
是冗余语法。