Java 如何确保将特定参数传递给方法?
例如,有一个方法Java 如何确保将特定参数传递给方法?,java,android,Java,Android,例如,有一个方法public void set_-gender(String-gender){},请确保在不使用枚举的情况下,仅将“male”或“male”传递给此方法 另外,当方法声明为public void set_gender(String…params){}时,如何满足此需求 如果没有这样的方法来实现这一点,那么当有人传递这个方法无法理解的字符串时,我怎么能在IDE中发出警告,就像在Android Studio中,当我传递的值不是某个类中定义的标志时,它是如何工作的一样。我可以想到以下四
public void set_-gender(String-gender){}
,请确保在不使用枚举的情况下,仅将“male”或“male”传递给此方法
另外,当方法声明为public void set_gender(String…params){}
时,如何满足此需求
如果没有这样的方法来实现这一点,那么当有人传递这个方法无法理解的字符串时,我怎么能在IDE中发出警告,就像在Android Studio中,当我传递的值不是某个类中定义的标志时,它是如何工作的一样。我可以想到以下四种方法:
使用不带参数的预定义方法:
public void setMale() { /* TODO: Implement */ }
public void setFemale() { /* TODO: Implement */ }
保留setGender()true
表示男性,false
女性(或相反):
将String
用作其参数时保留setGender()
,如果提供的参数不符合范围,则抛出IllegalArgumentException
:
public void setGender(String gender) {
if (!"male".equalsIgnoreCase(gender) && !"female".equalsIgnoreCase(gender)) {
throw new IllegalArgumentException("Bad parameter");
}
/* TODO: Implement */
}
只需使用enum,坦率地说,它的设计正是考虑到了这个用例。或者如果你真的那么担心表现
哦,作为补充,你问了这个问题:
如果没有这样的方法来认识到这一点,我怎么能给出一个警告呢
IDE时,有人正在传递此方法无法传递的字符串
理解,就像我路过Android Studio时它是如何工作的
不是在某个类中定义的标志的值
它们通过使用IntDef
;来实现这一点 以下是我能想到的四种方法:
使用不带参数的预定义方法:
public void setMale() { /* TODO: Implement */ }
public void setFemale() { /* TODO: Implement */ }
保留setGender()true
表示男性,false
女性(或相反):
将String
用作其参数时保留setGender()
,如果提供的参数不符合范围,则抛出IllegalArgumentException
:
public void setGender(String gender) {
if (!"male".equalsIgnoreCase(gender) && !"female".equalsIgnoreCase(gender)) {
throw new IllegalArgumentException("Bad parameter");
}
/* TODO: Implement */
}
只需使用enum,坦率地说,它的设计正是考虑到了这个用例。或者如果你真的那么担心表现
哦,作为补充,你问了这个问题:
如果没有这样的方法来认识到这一点,我怎么能给出一个警告呢
IDE时,有人正在传递此方法无法传递的字符串
理解,就像我路过Android Studio时它是如何工作的
不是在某个类中定义的标志的值
它们通过使用IntDef
;来实现这一点 这种情况有注释。您可以用它标记参数,然后在运行时检查它以进行验证。对于这种情况有注释。您可以用它标记参数,然后在运行时检查它以进行验证。公共静态最终字符串MALE=“MALE”
或者更好地使用booleanpublic static final boolean MALE=true
和public static final boolean FEMALE=false
此方法有任何问题吗?将setGender
设为私有函数,并创建两个新方法setMale
和setFemale
,它们将调用setGender
,但是枚举会更好-为什么不使用它?public static final String MALE=“MALE”
或者更好地使用booleanpublic static final boolean MALE=true
和public static final boolean FEMALE=false
此方法有任何问题吗?将setGender
设为私有函数,并创建两个新方法setMale
和setFemale
,它们将调用setGender
,但是enum会更好——为什么不使用它呢?