java枚举与常量类的区别】的更多相关文章

1)枚举型可以直接与数据库打交道,我通常使用varchar类型存储,对应的是枚举的常量名.(数据库中好像也有枚举类型,不过也没用过) 2) switch语句支持枚举型,当switch使用int.String类型时,由于值的不稳定性往往会有越界的现象,对于这个的处理往往只能通过if条件筛选以及default模块来处理.而使用枚举型后,在编译期间限定类型,不允许发生越界的情况 3) 当你使用常量类时,往往得通过equals去判断两者是否相等,使用枚举的话由于常量值地址唯一,可以用==直接对比,性能会…
我们都知道,定义一个常量类是十分简单的.首先差固件一个类,然后类中声明一些public修饰的静态常量.没错就这么简单: 写好之后,在其他地方使用的时候,直接类名.属性名就可以使用了. 而LZ现在想的是能不能换一种方式来写,实际效果是一样的,但逼格会不会高点呢?仁者见仁智者见智啦: 大家会发现,不就是类改成了接口了吗?然后常量的public static final修饰去掉了吗?对,没错就是这样.个人觉得逼格高点,同时也可以反映出开发人员的技术水平.那么我们来看一下为什么会等同.我们将次接口编译之…
参考 public class Constants { public static enum ServiceStatus{ NORMAL(1,"正常办理"),CHANGEING(2,"应收变更中"),BACKING(3,"退单中"),BACK(4,"退单"); private ServiceStatus(Integer value,String name){ this.value = value; this.name = na…
Java中的枚举类型有getClass()和getDeclaringClass()两个方法,在通常情况下这两个方法返回的类型一样,在某些场景下会有不同的表现 参照 http://stackoverflow.com/questions/5758660/java-enum-getdeclaringclass-vs-getclass…
1.抽象类不能被实例化. 2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态. 3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体 4.含有抽象方法的类必须申明为抽象类 5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类. 抽象类是否可以有构造函数?答案是可以有.抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生.不仅如此,抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码…
一.最基本的用法 public enum TestEnum { IMG,TEXT,WORD } 使用时: TestEnum testEnum=TestEnum.WORD; System.out.println(testEnum.toString()); //WORD System.out.println(testEnum.ordinal()); 二.进阶用法1 public enum TestEnum { IMG { public String getType() { return "img&q…
最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, BLUE_BAGE; } 编译不过. 我将赋值语句修改了以后,如下所示: public enum ColorSelect { RED_BAGE , GREEN_BAGE, BLUE_BAGE; } 编译通过.说明C++那样的赋值方法不适用java.所以,我需要弄清楚的是: 1. 在java平台上,如…
前言 众所周知,系统里有很多比如订单状态.审核状态:性别.结算方式.交易类型等属性,这些属性只有几个值,一般用0.1.2.3等的数字标识存入数据库,每次对这些属性所属对象的增删改操作,都会在代码里给状态设置值,由于项目是多人开发的,如果每次设置值的时候都直接set 0.1.2,容易出错,而且状态假设不用0.1.2表示了,用1.2.3表示,这时候所有set状态的地方都得改变,维护麻烦.所以用常量表示状态值,甚好. 据我目前所知,系统里实现常量的方式有三种: 1,  接口常量 2,  类常量 3, …
IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要地是不能在编译时进行类型检查,编程靠运气,只有运行时在用户面前崩溃了(而且是某个特定数据.几十遍运行之后才崩溃了)才丢人地被发现. 所以最近10几年都是强调强类型的编程方式,尽量不要弱类型,尽量不要画蛇添足地去搞什么“动态”.真正好的动态程序,也是强类型的,解决了稳定性问题的. 而 .net 最初设…
通过一段时间的项目实践,发现java中的枚举与.net中的枚举有很大的差别,初期造成了我对java中的枚举一些错误理解及部分有缺陷的应用,其实追其原因还是因为我会习惯性的认为java的枚举在作用以及定义上与.net应该是差不多的,毕竟两者都是高级语言,语言上也有很多相似之处.这就是老师傅常说的新手好教,老兵不好教的原因,新手脑子一片空白不会有任何干扰,老兵总会以自己曾经的某些经验与新知识做对比.     习惯性观点一:枚举的定义应该与.net相同,比如在.net中我们可以这样定义枚举. publ…