【问题标题】:Easy way to Increment private variables?增加私有变量的简单方法?
【发布时间】:2015-08-11 03:48:15
【问题描述】:

我想知道是否有更简单的方法来增加另一个类的私有变量。以下是我通常的做法:

如果我只需要在我的代码中很少这样做:

pc.setActionsCurrent(pc.getActionsCurrent()-1);

如果我需要做很多增量,我会做一个特殊的设置器:

//In the PC class
public void spendAction(){
    this.actionsCurrent--;
}

//In the incrementing Class
pc.spendAction();

有没有更好的方法来解决这个问题?如果变量是公开的

pc.actionsCurrent--;

就够了,我不禁觉得我把事情复杂化了。

【问题讨论】:

  • 为该私有字段定义一个 getter/setter。这是执行此操作的标准方法。
  • 封装。您的私有变量不应被其他对象更改。
  • 在你说递增但你的代码说你在递减的地方。
  • 如果你的变量是公开的,那么什么是最好的,那么 object.propertyName++;或 object.propertyName--;
  • 我刚开始编程时也有同样的感觉。编写太多代码只是为了将变量减一。不过后来就习惯了。

标签: java


【解决方案1】:

没有。方法抽象通常是实现它的方法,您也可以传入增量值(并且您可以在实现中利用它)。考虑类似

private long increment = 1;
private long myVariable = 0;
public void setMyVariable(long myVariable) {
    this.myVariable = myVariable;
}
public void setIncrement(long increment) {
    this.increment = increment;
}
public long getMyVariable() {
    return this.myVariable;
}
public void addToMyVariable(long val) {
   this.myVariable += val;
}
public void incrementMyVariable() {
   addToMyVariable(increment);
}

以上将允许增量值变化(这通常称为encapsulation)。

【讨论】:

  • OP 正在询问简单的方法。
  • @PiyushMittal 支付程序员的费用?
  • 我猜你给出的 sn-p 有点复杂。 @艾略特
  • 这么多我的专业二传手示例?我一直在寻找的是在私有变量上执行 ++ 或 -- 的最简单方法。但如果我需要更复杂的增量,我会记住你的例子。
  • 我看不出将增量作为成员变量的意义。将其作为参数提供会简单得多。否则和原来的代码差别不大,也有同样的时序窗口问题。
【解决方案2】:

只需定义一个增量方法。一般而言,您可以将增量作为参数提供,它可以是负数:

public void increment(int augend)
{
    this.actionsCurrent += augend;
}

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2015-06-30
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多