是否可以防止从中减去int? final关键字在这里不起作用,因为我仍然需要能够添加它。谢谢!
答案 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
),然后提供允许调用者发生您想要发生的事情的方法,并禁止您不想要的内容发生。