防止Int被减去

时间:2013-08-12 07:07:46

标签: java int subtraction

是否可以防止从中减去int? final关键字在这里不起作用,因为我仍然需要能够添加它。谢谢!

4 个答案:

答案 0 :(得分:1)

您可以使用Integer包装类而不是int,因为Integer类是不可变的。

另一个想法:

不要将您的字符串公开为公共变量,只需提供修改该int的方法即可。如果有人试图减去该字符串,那么您可以在方法中控制它。

答案 1 :(得分:1)

即使您只是禁用减法,用户仍然可以添加负数...从而绕过您的防御。你可以在这里使用包装器

public class myInteger{
   private int innerVal;

   public int getInnerVal(){ return innerVal};

   public void myInteger(int val) { innerVal = val;}

   public void add(myInteger secondInt)
   {
      int sum = innerVal + secondInt.innerVal;

      if(sum > innerVal)
      {
          innerVal = sum;
      }
   }
}

答案 2 :(得分:1)

public class AddButNoSubtract {

    private int i; // private

    public int getI() {
        return i;
    }

    public void incrementBy(int j) { // instead of setter
        // add if positive
        if (j > 0) {
            // check for overflow
            if (Integer.MAX_VALUE - j >= i)
                this.i += j;
        }
    }

}

答案 3 :(得分:1)

  

是否可以阻止从中减去int?

如果int变量可以访问(而不是final),那么编号

执行此类操作的唯一方法是使变量无法访问(例如private),然后提供允许调用者发生您想要发生的事情的方法,并禁止您不想要的内容发生。