本来按道理应该用布尔类型,为什么要使用整型0和1来代替?

翟志军 发布于 2013/08/09 13:39
阅读 1K+
收藏 0

同样的,看到一些国内的开源项目,也发现这样的问题。

比如:private Integer messageState;//消息状态  0未读 1已读

这个字段的命名问题,只谈它的类型问题,这个不应该是布尔类型吗?

申明,我不是在找麻烦。而是想知道为什么?


以下是问题补充:

@翟志军:补充下,为什么java或者其他有布尔类型的语言要发明布尔类型呢? (2013/08/09 16:57)
加载中
0
不正常的物种
不正常的物种
是应该是历史遗留问题,因为以前0就是false;1就是true.在一个就是1和0好打一点啊 
0
小虫0302
小虫0302
0,1 存储起来各个地方都通用,兼容性好。
0
恺哥
恺哥

接着上边两位的回答继续补充,字段被设计成Integer也方便将来的扩展;

比如可能的值还会有2,3,4,5,6,7,8.......

0
方棱
方棱

老子还用字符串'Yes'和'No'来表示呢!

理由很简单,看代码看得懂。

0
魔力猫
魔力猫
这是因为有些数据库不支持布尔类型。还有就是所谓想着日后状态值未必只有布尔。
0
翟志军
翟志军

引用来自“恺哥”的答案

接着上边两位的回答继续补充,字段被设计成Integer也方便将来的扩展;

比如可能的值还会有2,3,4,5,6,7,8.......

嗯。

那我想再深入的问下:这算是为将来设计吗?

恺哥
恺哥
不排除设计者有这方面考虑, 另外也不排除是习惯问题。
0
Tuesday
Tuesday

楼主, 布尔只有两种情况, 可数字型就有无限种可能.

人家带思考性的返回值, 你竟然来喷.

魔力猫
魔力猫
回复 @Tuesday : 暴露个什么,这里是源代码,如果暴露也就是说你源代码都给人看了。你如果非要把对象属性名字写成天书来保证源代码安全么?
Tuesday
Tuesday
回复 @魔力猫 : 枚举会暴露安全信息. 假如你在腾讯这种公司, 你这枚举直接就给否决了. 基本上就是数字. 05450257-9658 这种. 需要到后台的bug分析库里面才知道是什么原因.
小虫0302
小虫0302
回复 @魔力猫 : 怕看不懂具体意思你可以定义常量呀,define GROUP_INACTIVE = 1; define GROUP_BANNED=2; .....
魔力猫
魔力猫
但是这种数值表示势必增加维护成本,看数字天知道表示的什么,这点上就不如枚举了。
0
王瑞平
王瑞平
留给扩展,扩展懂吗?
0
sjfengOS
sjfengOS

引用来自“陈真诚”的答案

引用来自“恺哥”的答案

接着上边两位的回答继续补充,字段被设计成Integer也方便将来的扩展;

比如可能的值还会有2,3,4,5,6,7,8.......

嗯。

那我想再深入的问下:这算是为将来设计吗?

那用 int  和 integer  有什么好处  看有的用int  有的用integer  
sxgkwei
sxgkwei
integer是封装类型,可以表示数据库中没有值(null)的那种状态,而int,如果没有值就会被初始化成0,而数据库其实,不是0,而是null,真正是0的时候,int也是0,int在null和0是都是0,分不清了。。。啊,说的我头晕了,看的你头晕没?
0
Monkey
Monkey
进程有一个很重要特征错误号。
返回顶部
顶部