我想从方法中访问类中的StringBuilder字段。字段和方法都是非静态的。我已经尝试了很多方法,无论我采用哪种方式,这一切似乎都有效,但我只是想知道正确的方法是什么。这是我的意思的一个例子:
public class ExampleClass {
private StringBuilder sb = new StringBuilder();
private void call() {
sb.append("Test"); // I can do it this way
this.sb.append("Second way"); // or this way
// does it matter? can someone explain it to me?
}
public static void main(String[] args) {
ExampleClass ec = new ExampleClass();
ec.call();
}
}
我只是不明白这一点。我可能只是一个完全白痴,但访问该领域的正确方法是什么?
非常感谢,
保
答案 0 :(得分:2)
这两者之间存在差异
sb.append("Test"); // I can do it this way
this.sb.append("Second way"); // or this way
只有在该上下文中还有一些其他变量也称为sb
。
例如:
public class ExampleClass {
private StringBuilder sb = new StringBuilder();
private void call(StringBuilder sb) {
sb.append("Test"); //refers to the parameter passed to the function
this.sb.append("Second way"); //refers to your member
}
public static void main(String[] args) {
ExampleClass ec = new ExampleClass();
StringBuilder sb = new StringBuilder();
ec.call(sb);
}
}
答案 1 :(得分:0)
在您的示例中,sb
和this.sb
引用同一个对象,该对象是ExampleClass
的该实例的字段。你可以使用其中任何一个。
在你的情况下,我只会使用sb
,因为没有歧义。在以下情况中使用this
会很有用:
public void setBuilder(StringBuilder sb) {
this.sb = sb;
}
this.sb
是您的类字段,sb
是setBuilder
方法的参数。
答案 2 :(得分:0)
没有“正确的方法”来做到这一点。我更喜欢不使用this
,除非它不明确,因为在IDE中,该字段会为我突出显示,因此我可以看到它正在解析为某个字段。此外,代码中的this
太多了this
。许多其他人更愿意添加{{1}},因为这样就不会给读者带来歧义。
答案 3 :(得分:0)
我不确定这种情况是否有标准。
基本上“this”是隐含的,在你的情况下没有歧义(如果你有一个具有相同名称的参数,或者超类中的受保护/公共字段,则可能存在歧义)。
我通常使用“this”,但这是个人品味的问题,我发现当我访问类参数时,我更容易快速查看。
答案 4 :(得分:0)
两者本身都在做同样的事情。在这种情况下,使用这个是多余的。