java - 布尔值可以是幻数吗
问题描述
我想知道如何处理代码中的布尔值。
假设我有一Human
堂课:
public class Human {
private final static int NEWBORN = 0;
private int age;
private boolean married;
public Human() {
age = NEWBORN;
married = false;
}
...
}
在这种情况下是false
一个神奇的数字吗?我应该像年龄一样创建一个常数吗?
如果没有,是否有任何情况我必须处理布尔值?
解决方案
严格来说,这种用法很好。对于命名的 .false
是一个完全不言自明的值。boolean
married
您仍然不会看到很多,因为您可能天真地用布尔值建模的许多情况实际上涉及的不仅仅是两个状态。
例如,如果您需要以不同的方式处理未婚、离异和丧偶的人怎么办?突然一个简单的boolean
将无法准确地表示您的域数据。
如有疑问,您可以只引入一个enum
(比如说MaritalStatus
),即使它开始时只有两个值。在此处添加额外的枚举值比完全从布尔值更改为不同的类型更容易。
使用 an 的另一个常见原因enum
是您可以添加一个UNKNOWN
经常需要的显式值(并避免讨厌使用null
来表示“未知”)。
推荐阅读
- android-studio - 如何在android studio中顺序运行几个命令行?
- vim - s/vi/VIM/g 和 s:^vi$:VIM 中 : 和 / 的区别:
- javascript - 将 Javascript GetElementById 变量传递给 Ajax
- mysql - MySQL中的变量定义的FROM子句中的表
- opencv - 对象定位
- ios - Cordova - 在标签中显示本地图像文件
- outlook-web-addins - Outlook 加载项:在 Outlook 客户端中保存相同内容后,未在 OWA 上获取 Outlook 加载项 RoamingSettings
- r - R - 如何在应用中使用 sum 和 group_by?
- xslt - 如何在单循环中读取 2 个逗号分隔的字符串 - XSLT
- mysql - 在 JOIN 查询中生成匿名 ID