0

我想从方法访问类中的 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();
    }
}

我只是不明白这一点。我可能只是一个彻头彻尾的白痴,但访问该字段的正确方法是什么?

非常感谢,

保罗

4

5 回答 5

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);
    }
}
于 2012-04-11T11:42:54.220 回答
0

在您的示例中,sbthis.sb引用同一个对象,这是该实例的字段ExampleClass。您可以使用其中任何一个。

在你的情况下,我会使用sb,因为没有歧义。在以下情况下使用this可能很有用:

public void setBuilder(StringBuilder sb) {
    this.sb = sb;
}

this.sb是你的类字段,sbsetBuilder方法的参数。

于 2012-04-11T11:42:51.773 回答
0

没有“正确的方法”可以做到这一点。我宁愿不使用this,除非它不明确,因为在 IDE 中,该字段为我突出显示,所以我可以看到它正在解析为一个字段。此外,太多this的 's 混乱的代码。许多其他人更喜欢添加this,因为这样就不会让读者产生歧义。

于 2012-04-11T11:42:52.363 回答
0

我不确定这种情况是否有标准。

基本上“this”是隐含的,在你的情况下没有歧义(如果你有一个同名的参数,或者超类中的受保护/公共字段)。

我通常使用“this”,但这是个人喜好问题,我发现何时访问类参数更容易快速查看。

于 2012-04-11T11:43:06.500 回答
0

两者本质上都在做同样的事情。在这种情况下使用 this 是多余的..

于 2012-04-11T11:44:04.157 回答