如何确保将特定参数传递给方法?

时间:2016-10-11 04:40:29

标签: java android

例如,有一种方法public void set_gender(String gender) {},请确保只将"male""female"传递给此方法,而不使用枚举

另外,当方法声明为public void set_gender(String... params) {}时,如何满足此要求?

如果没有这种方法可以实现这一点,当有人传递一个这种方法无法理解的字符串时,我怎么能在IDE中发出警告,就像我在Android Studio中工作时的情况一样。 m传递的值不是某个类中定义的标志。

2 个答案:

答案 0 :(得分:2)

这些是我能想到的四种方式:

  1. 使用不带参数的预定义方法:

        public void setMale() { /* TODO: Implement */ }
    
        public void setFemale() { /* TODO: Implement */ }
    
  2. 保留setGender(),但使用boolean值作为参数,而不是普通Stringtrue表示它是男性,false女性(或其他方式):

        public void setGender(boolean male) { /* TODO: Implement */ }
    
  3. 使用setGender()作为参数时保持String,如果提供的参数不符合范围,则抛出IllegalArgumentException

        public void setGender(String gender) {
           if (!"male".equalsIgnoreCase(gender) && !"female".equalsIgnoreCase(gender)) {
               throw new IllegalArgumentException("Bad parameter");
           }
           /* TODO: Implement */ 
        }
    
  4. 只需使用枚举,坦率地说,这是考虑到这个确切的用例。或IntDef,如果你真的担心表现。
  5. 哦,另外,你问这个问题:

      

    如果没有这种方法可以实现这一点,我怎么能发出警告   IDE,当有人传递此方法无法传递的字符串时   理解,就像我在传递时在Android Studio中的工作方式一样   一个值,它不是在某个类中定义的标志。

    他们使用IntDef实现这一目标。 ;)

答案 1 :(得分:1)

此类案例有StringDef注释。您可以使用它标记参数,然后在运行时检查它以进行验证。