版权声明:这是看了Java Effective这本书的某个关于枚举的章节之后有感而发~不是原创~
先来一个枚举:
public enum EnumArmyLvlType {
CMD0,
en_armu_lvl_type_divine, /* 1.神将 */
en_armu_lvl_type_outstanding, /* 2.卓越 */
en_armu_lvl_type_elite, /* 3.精英 */
CMD4, CMD5,
en_armu_lvl_type_normal, /* 6.普通 */
;
这是一个简单枚举型,代表怪物的品质等级。
有时候呢,我们需要把数据传递出去,比如,从Android客户端发送数据给C++服务端,我们不可能把枚举变量直接传出去吧?~这样太不可爱了~
于是乎呢,聪明的我,正常情况下会这么做:
int iArmyLvlType = EnumArmyLvlType.en_armu_lvl_type_outstanding.ordinal();
这是没错吖,挺好的~可是,这样不安全~
为什么呢?因为ordinal方法不是专门给我们用来做对应关系的吖,它仅仅是枚举变量的一个序号而已。
道理很简单的,就好比...我比不出来
总之嘛,这样做不专业~虽然这么做也不能说是错的。
就好比...就好比...你们自己理解,我不比了
我们不能耍小聪明~ordinal()方法得到的就是一个序号,仅仅是一个序号,不准拿来做对应关系~
呐,大家别骂我先喇~看看下面的这个做法,是不是心情舒服了很多?~
这是利用了枚举类的构造器,这样就能指定枚举变量对应的数值是多少了~
public enum EnumArmyLvlType {
/* 发现这里有什么不一样了么?没有了"CMD," 这些滥竽充数的变量了,多了(1)这样的东西,就是构造函数 */
en_armu_lvl_type_divine(1), /* 1.神将 */
en_armu_lvl_type_outstanding(2), /* 2.卓越 */
en_armu_lvl_type_elite(3), /* 3.精英 */
en_armu_lvl_type_normal(6), /* 6.普通 */
;
private int iNum = 0;
/* 构造器,记住喇,必须是私有的~ */
private EnumArmyLvlType(int iNum) {
this.iNum = iNum;
}
/* 用这个方法代替ordinal()方法,安全,专业,包退包换~ */
public int toNumber() {
return this.iNum;
}
}
怎么样?看出来了么?这样我们就可以这样转换了:
int iArmyLvlType = EnumArmyLvlType.en_armu_lvl_type_outstanding.toNumer();
这样,toNumber()函数就是专门用来做对应关系的,这就是专职,专业,无副作用,欢迎尝试~关于枚举型构造器的知识,要自己去百度~不准问我~PS:
也许有人会说,为什么要这么麻烦?为什么en_armu_lvl_type_normal(6), /* 6.普通 */ 对应的数字是6?直接改成4不就好了,根本就不会有什么麻烦,这样就可以方便地使用ordinal方法~!
这个,你听我解释,不是这样的,你听我解释..老婆,求求你听我解释,这只是一个误会...
不好意思,太入戏了。
其实原因是这样的,这样做是为了扩展,也是为了方便服务器。
具体原因我不太清楚,总之,做服务器的程序员告诉我,预留一些空位,这样他可以方便管理。
分享到:
相关推荐
Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { ...也是说,使用name()方法和valueOf(String)方法能够在枚举类型对象和字符串之间方便得转换。当然,假设valu
数据分类,文献中nominal,ordinal,数据类型的解释与例子,本资源为PPT是在统计学中将数据分为不同的类型
Support Vector Learning for Ordinal Regression
Large Margin Rank Boundaries for Ordinal Regression
这是何毓琦教授和清华的赵千川、贾庆山老师的英文专著
Coq中的序数普通人我们定义序数如下。 Inductive t: Type := | build (A: Type) (os: A -> t) . Inductive le: t -> t -> Prop := | le_intro A0 A1 os0 os1 (LE: forall (a0: A0), exists (a1: A1), le (os0 a0) ...
Ordinal Representation for Biometric Patterns. Very helpful in Large number of object to be compared. its sort of ranking based comparison.not quantitative
Recently, distance ... We first present a linear ordinal Mahalanobis DML model that tries to preserve both the local geometry information and the ordinal relationship of the data. Then, we develop a no
ordinal-layers.github.io
顺序标记上班懒惰的咳嗽咳嗽PATCAIL 最大化平凡和减少数字的游戏文件概述: calc.js将包含所有获取某物价值的get()和calc()函数。 saveload.js将包含初始化,保存和加载文件。 color.js将包含与颜色转换和序数...
[SLFM 019] Ordinal Algebras - Alfred Tarski (NH 1956)(T).pdf
Fast stochastic ordinal embedding with variance reduction and adaptive step size
Aggregating ordinal user preferences for effective reputation computation of online services
永远不要根据枚举的序数导出与它关联的值,而是要将它保存在一个实例域中:public enum Ensemble {Enum规范中谈及ordinal方法时写道:
TSCCA算法,三向稀树典型相关分析,分析不同模态直接的关联,使用lasso正则化
Gabor Ordinal Measures for Face Recognition
该文件含有9个JAVA分代码,可以实现文件缓冲,文件查看,文件读写等功能。
FindAllOrdinalCP.m - 通过使用 CEofOP 统计 [UK15] 检测结构变化点并返回所有检测到的变化点的位置。 使用 [UK13] 中介绍的快速算法计算序数模式。 变点检测算法的输入参数包括: - falseAlarmRate - 分配的错误...
Jekyll-Ordinal Jekyll液体过滤器可输出日期序号,例如“ st”,“ nd”,“ rd”或“ th”。 安装 要将其与网站ordinal.rb ,请将_plugins复制到_plugins文件夹中。 注意:因为禁止使用带有--safe选项的任何...
给定有限数量的随机系统,目标是动态分配有限的抽样预算,以最大化选择“最佳”系统的概率。 系统使用控制样本观察的概率分布进行编码,这些概率分布是未知的,仅假定属于不需要接受任何参数表示的广泛分布系列。...