封装冗余设置器

问题描述 投票:-1回答:1

我最近发现一种编码包含冗余代码。如果我将Setter留给(第18-21行)例如。 sumnr,它仍然可以很好地工作。因此,该代码似乎是不必要的。但是,如果我将this.sumnr = sumnr;(Line11)留在外面,而将Setter留在原地,那么它将不起作用。为什么设置行第18-21行中的this.sumnr - sumnr无法备份?

有人知道吗?

public class SortSums {
    private int sumnr;
    private int part1;
    private int part2;
    private int result;
    private int answer;
    private String sign;

    public SortSums(int somnr, int part1, int part2, int result, String sign)
    {
        this.sumnr = sumnr;    // LINE11  this line however, seems indispensible. 
        this.part1 = part1;    // idem
        this.part2 = part2;
        this.result = result;
        this.sign = sign;
    }

    public void setSumnr(int sumnr)  // LINE18 it seems that this 'void' method is redundant.
    {
        this.sumnr = sumnr;
    } // LINE21

    public int getSumnr()
    {
        return sumnr;
    }

//etc...

java this setter getter
1个回答
0
投票

因为Java从不在幕后神奇地召唤二传手。如果要在第11行上使用设置器,则需要将其替换为:

this.setSumnr(sumnr);

尽管从构造函数内部调用方法通常不是最佳实践(尽管有些人认为二传手是对该规则的一种豁免,但有些人则不然。

例如,如果我不让塞特犬(第18-21行) sumnr,它仍然运行良好。因此该代码似乎是不必要的。

不一定。这完全取决于您是否要在创建sumnr对象后允许更改SortSums。如果这样做,您将需要二传手。如果您不这样做,请忽略它。

© www.soinside.com 2019 - 2024. All rights reserved.