首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

议论:如果一个布尔值可能为空,则不要用布尔来定义它的类型

2012-10-31 
讨论:如果一个布尔值可能为空,则不要用布尔来定义它的类型“肚子里的孩子是不是男的?”? 除了回答“是”或“否”

讨论:如果一个布尔值可能为空,则不要用布尔来定义它的类型
“肚子里的孩子是不是男的?”? 除了回答“是”或“否”,还可以回答“不知道/未定”


原始的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
男:    1
二尾子:2 2 楼 kerrysk 2011-04-20   程序设计就要有这样的严谨性。顶LZ 3 楼 kimmking 2011-04-20   kerrysk 写道程序设计就要有这样的严谨性。顶LZ
一般来说,运算是二值逻辑,true/false。
如果算上对象或指针的NULL,是三值逻辑。

如果,在加上数据库或是弱类型里的 unknown/undefined
可以说是四值逻辑。 4 楼 chenjianjx 2011-04-20   总结的不错!

kimmking 写道kerrysk 写道程序设计就要有这样的严谨性。顶LZ
一般来说,运算是二值逻辑,true/false。
如果算上对象或指针的NULL,是三值逻辑。

如果,在加上数据库或是弱类型里的 unknown/undefined
可以说是四值逻辑。

热点排行