
上QQ阅读APP看书,第一时间看更新
2.3.5 枚举
在标量类型的基础之上,还可以定义枚举(Enum)类型。比如用户的性别和最高学历这样的字段,只有屈指可数的可选项,而且这些可选项中,只能选择一种,这时候使用枚举型是合适的。
需求 设计一个用户类型,提供一个性别字段。性别字段可以接受的值只有男、女、其他和未知四种。代码如下:

可以在一个复杂类型中把枚举类型当作一个基本标量类型来使用。但需要注意的是,如果输入的查询不符合枚举的要求,就会报错。同样地,如果服务器端的结果数据不符合要求,也会报错。
可以看出使用枚举型能够规范数据,相对于普通字符串型数据,枚举型可以帮我们及早发现拼写错误,避免错误的数据在客户端和服务器端之间扩散。但有不少程序员认为,在API中使用枚举型可能会破坏API升级的兼容性。有些公司会强制规定在API调用中,参数可以使用枚举型,但是返回值无论如何都不可以使用枚举型,即便是包含枚举型的复杂对象也不可以。