布尔值可以是幻数吗

Twi*_*zzl 3 java boolean coding-style

我想知道如何处理代码中的布尔值。

假设我有一Human堂课:

   public class Human {

     private final static int NEWBORN = 0;

     private int age;
     private boolean married;

     public Human() {
       age = NEWBORN;
       married = false;
     }

     ...
   } 

Run Code Online (Sandbox Code Playgroud)

就是false在这种情况下,一个神奇的数字,我应该创建一个常量像我随着年龄的增长做了?

如果没有,是否有任何情况我必须处理布尔值?

Joa*_*uer 7

严格来说这种用法是可以的。false是一个完全不言自明的boolean命名值married

您仍然不会看到很多,因为您可能天真地使用布尔值建模的许多情况实际上涉及的不仅仅是两个状态。

例如,如果您需要以不同的方式处理未婚、离婚和丧偶的人怎么办?突然一个简单的boolean就不能准确地表示你的域数据了。

如有疑问,您可以只引入一个enum(比方说MaritalStatus),即使它开始时只有两个值。在这里添加额外的枚举值比完全从布尔值更改为不同的类型更容易。

使用 an 的另一个常见原因enum是因为您可以添加一个UNKNOWN经常需要的显式值(并避免使用null来表示“未知”)。