例如,有一种方法public void set_gender(String gender) {}
,请确保只将"male"
或"female"
传递给此方法,而不使用枚举。
另外,当方法声明为public void set_gender(String... params) {}
时,如何满足此要求?
如果没有这种方法可以实现这一点,当有人传递一个这种方法无法理解的字符串时,我怎么能在IDE中发出警告,就像我在Android Studio中工作时的情况一样。 m传递的值不是某个类中定义的标志。
答案 0 :(得分:2)
这些是我能想到的四种方式:
使用不带参数的预定义方法:
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) && !"female".equalsIgnoreCase(gender)) {
throw new IllegalArgumentException("Bad parameter");
}
/* TODO: Implement */
}
IntDef
,如果你真的担心表现。哦,另外,你问这个问题:
如果没有这种方法可以实现这一点,我怎么能发出警告 IDE,当有人传递此方法无法传递的字符串时 理解,就像我在传递时在Android Studio中的工作方式一样 一个值,它不是在某个类中定义的标志。
他们使用IntDef
实现这一目标。 ;)
答案 1 :(得分:1)
此类案例有StringDef注释。您可以使用它标记参数,然后在运行时检查它以进行验证。