如何限制字符串变量,使其只能使用两个字符串中的一个

时间:2015-12-08 17:12:58

标签: java variables

我有一个类动物,这个类的变量之一是性别。我想限制这个变量,以便它只能接受字符串" m" (男性)或" f" (女性)。这是我到目前为止的代码

public class Animal {
    String gender;

    public animal(String gender) {
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }
}

我将如何做到这一点?

3 个答案:

答案 0 :(得分:3)

简单的答案是在你的setter中断言并抛出(比方说)一个IllegalArgumentException如果字符串不像你期望的那样('M','F'并且也可能注意null。您可能也希望trim()输入

更好的答案是考虑性别不是字符串,您可能希望调查enums,或者可能是表示男性与女性的布尔值(我建议在打开性别偏见批评的风险!)

答案 1 :(得分:1)

如果你真的没有需要它是String那么enum是理想的:

enum Gender {
    Male, Female, Unknown;
}
public class Animal {

    Gender gender;

    public Animal(Gender gender) {
        this.gender = gender;
    }

    public Gender getGender() {
        return gender;
    }
}

答案 2 :(得分:0)

尝试使用枚举它是一个很好的解决方案:

public enum Gender {
 MALE, FEMALE;
 }  

 public class Animal {
  Gender gender;

public Animal(Gender gender) {
    this.gender = gender;
}

public Gender getGender() {
    return gender;
   }
 }

在您的mainTest中,您可以像这样使用它:

 public static void main(String[] args) {
    Animal boi   = new Animal(Gender.MALE);
    Animal babao = new Animal(Gender.FEMALE);

   System.out.println("Boi's gender is: " + boi.getGender());
   System.out.println("Babao's gender is: " + babao.getGender())
}

输出

 Boi's gender is MALE
 Babao's gender is FEMALE