Как убедиться, что определенные параметры передаются методу?

#java #android

#java #Android

Вопрос:

Например, существует метод public void set_gender(String gender) {} , убедитесь, что только "male" или "female" передается этому методу без использования перечисления.

Кроме того, как удовлетворить это требование, когда объявление метода public void set_gender(String... params) {} ?

Если нет такого способа реализовать это, как я могу выдать предупреждение в IDE, когда кто-то передает строку, которую этот метод не может понять, точно так же, как это работает в Android Studio, когда я передаю значение, которое не является флагом, определенным внутри определенного класса.

Комментарии:

1. public static final String MALE = "male" или гораздо лучше использовать логическое public static final boolean MALE = true значение и public static final boolean FEMALE = false какие-либо проблемы с этим методом?

2. создайте setGender закрытую функцию и создайте два новых метода setMale , и setFemale которые будут вызывать setGender , НО перечисление было бы лучше — почему бы не использовать его?

Ответ №1:

Это 4 способа, о которых я мог подумать:

  1. Используйте предварительно определенный метод без параметра:

         public void setMale() { /* TODO: Implement */ }
    
        public void setFemale() { /* TODO: Implement */ }
      
  2. Сохраните setGender() , но используйте boolean значения в качестве параметра вместо обычного String . true означает, что это мужской, false женский (или наоборот):

         public void setGender(boolean male) { /* TODO: Implement */ }
      
  3. Сохранить setGender() при использовании String в качестве параметра и выдать IllegalArgumentException , если предоставленный параметр не соответствует области видимости:

         public void setGender(String gender) {
           if (!"male".equalsIgnoreCase(gender) amp;amp; !"female".equalsIgnoreCase(gender)) {
               throw new IllegalArgumentException("Bad parameter");
           }
           /* TODO: Implement */ 
        }
      
  4. Просто используйте перечисления, которые, честно говоря, были разработаны с учетом именно этих вариантов использования. Или IntDef , если вы действительно так беспокоитесь о производительности.

О, и в качестве дополнения, этот вопрос, который вы задали:

Если нет такого способа реализовать это, как я могу выдать предупреждение в IDE, когда кто-то передает строку, которую этот метод не может понять, точно так же, как это работает в Android Studio, когда я передаю значение, которое не является флагом, определенным внутри определенного класса.

Они достигают этого с помощью IntDef . 😉

Ответ №2: