Предотвратить вычитание Int

Можно ли предотвратить вычитание int? Последнее ключевое слово здесь не сработает, так как мне все еще нужно добавить к нему. Спасибо!


person sparklyllama    schedule 12.08.2013    source источник
comment
Почему вы хотите это сделать? Если вы можете привести хороший пример, возможно, мы сможем предложить альтернативу.   -  person Peter Lawrey    schedule 12.08.2013
comment
Что может помешать кому-то добавить отрицательное число?   -  person Sinkingpoint    schedule 12.08.2013
comment
@sparklyllama, пожалуйста, примите один из ответов, которые были вам даны, или спросите, если чего-то не хватает   -  person No Idea For Name    schedule 12.08.2013


Ответы (4)


Вы можете использовать класс-оболочку Integer вместо класса int. поскольку класс Integer неизменяем.

Другая идея:

Не выставляйте свою строку как общедоступную переменную, просто предоставьте методы для изменения этого int. И если кто-то попытается вычесть эту строку, вы можете контролировать это в своем методе.

person Juned Ahsan    schedule 12.08.2013

даже если вы просто отключите вычитание, пользователи все равно могут добавить отрицательное число... и, таким образом, обойти вашу защиту. обертка - единственное, что вы можете использовать здесь

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;
      }
   }
}
person No Idea For Name    schedule 12.08.2013

Можно ли предотвратить вычитание int?

Если доступна переменная int (а не final), то Нет.

Единственный способ сделать это — сделать переменную недоступной (например, private), а затем предоставить методы, которые позволяют вызывающей стороне делать то, что вы хотите, и запрещать то, чего вы не хотите.

person Stephen C    schedule 12.08.2013

person    schedule
comment
Благодарю вас! Это как раз то, что мне было нужно. - person sparklyllama; 13.08.2013
comment
@sparklyllama Рад помочь. +1 к вопросу. - person Ravi K Thapliyal; 13.08.2013