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”
    或者更好地使用boolean
    public static final boolean MALE=true
    public static final boolean FEMALE=false
    此方法有任何问题吗?将
    setGender
    设为私有函数,并创建两个新方法
    setMale
    setFemale
    ,它们将调用
    setGender
    ,但是枚举会更好-为什么不使用它?
    public static final String MALE=“MALE”
    或者更好地使用boolean
    public static final boolean MALE=true
    public static final boolean FEMALE=false
    此方法有任何问题吗?将
    setGender
    设为私有函数,并创建两个新方法
    setMale
    setFemale
    ,它们将调用
    setGender
    ,但是enum会更好——为什么不使用它呢?