讨论:如果一个布尔值可能为空,则不要用布尔来定义它的类型
“肚子里的孩子是不是男的?”? 除了回答“是”或“否”,还可以回答“不知道/未定”
原始的boolean类型不能赋值为“未定”,不能用;
java.lang.Boolean类型的对象可以赋值为“null”,似乎可以解决这个问题。 但这种做法仍有隐患:
1. 有的人对“Boolean值可能为空”缺乏意识。 比如你的同事再调用你的 isBoy()时可能并不会先判断它是否为null.
2. 有些框架对封装类型如Boolean, Integer会使用默认值机制。比如有些Web Service框架就会把客户端传来的Boolean值强行设置成Boolean.FALSE
为了解决这个问题,最好弃用布尔类型,改用enum,或者字符串。人们在潜意识里都知道enum和字符串可能为空,因此不会贸然犯错。
enum Gender{ MALE, FEMALE}1 楼 bureaucrat 2011-04-20 女: 0