我有一个类动物,这个类的变量之一是性别。我想限制这个变量,以便它只能接受字符串" m" (男性)或" f" (女性)。这是我到目前为止的代码
public class Animal {
String gender;
public animal(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
}
我将如何做到这一点?
答案 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