2013-08-12 96 views
3

是否可以防止從int中減去int?最終的關鍵字在這裏不起作用,因爲我仍然需要添加它。謝謝!防止Int被減去

+1

你爲什麼要這麼做?如果你能提供一個很好的例子,或許我們可以提出一個替代方案。 –

+2

什麼是阻止某人添加負數呢? – Sinkingpoint

+0

@sparklyllama請接受提供給您的答案之一或詢問是否缺少 –

回答

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; 
     } 
    } 

} 
+0

謝謝!這正是我所需要的。 – sparklyllama

+0

@sparklyllama很高興幫助。 +1的問題。 –

1

您可以使用Integer包裝類而不是int,因爲Integer類是不可變的。

另一個想法:

不要暴露你的字符串作爲一個公共變量,只需提供方法(縣)修改INT。如果有人試圖減去那個字符串,那麼你可以在你的方法中控制它。

2

即使您只是禁用相減,用戶仍然可以添加一個負數...因此繞過你的防守。包裝是唯一的東西,你可以在這裏使用

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; 
     } 
    } 
} 
+0

+1避免溢出的好方法。 –

+0

@PeterLawrey謝謝 –

1

是否有可能阻止一個int從被扣除?

如果int變量訪問(而不是final),那麼第

做這種事情的唯一方法是使變量不可訪問(如private),然後提供一些方法,允許打電話給你想要發生的事情,並禁止你不想發生的事情。