#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 способа, о которых я мог подумать:
-
Используйте предварительно определенный метод без параметра:
public void setMale() { /* TODO: Implement */ } public void setFemale() { /* TODO: Implement */ }
-
Сохраните
setGender()
, но используйтеboolean
значения в качестве параметра вместо обычногоString
.true
означает, что это мужской,false
женский (или наоборот):public void setGender(boolean male) { /* TODO: Implement */ }
-
Сохранить
setGender()
при использованииString
в качестве параметра и выдатьIllegalArgumentException
, если предоставленный параметр не соответствует области видимости:public void setGender(String gender) { if (!"male".equalsIgnoreCase(gender) amp;amp; !"female".equalsIgnoreCase(gender)) { throw new IllegalArgumentException("Bad parameter"); } /* TODO: Implement */ }
- Просто используйте перечисления, которые, честно говоря, были разработаны с учетом именно этих вариантов использования. Или
IntDef
, если вы действительно так беспокоитесь о производительности.
О, и в качестве дополнения, этот вопрос, который вы задали:
Если нет такого способа реализовать это, как я могу выдать предупреждение в IDE, когда кто-то передает строку, которую этот метод не может понять, точно так же, как это работает в Android Studio, когда я передаю значение, которое не является флагом, определенным внутри определенного класса.
Они достигают этого с помощью IntDef
. 😉