所有的枚举类都继承自Enum,因为Java不支持多继承,所以枚举无法继承其它类。
枚举与普通类一样,可以实现2018股票交易接口api,接口。
[java]viewplaincopyprint?packagemardemo;publicclassEnumDemo{publicstaticvoidmain(String[]args){for(Colorcolor:Color.values()){color.setColor();}}interfacePaint{publicvoidsetColor();}publicenumColorimplementsPaint{RED('redcolor',0),GREEN('greencolor',,BLUE('bluecolor',,YELLOW('yellowcolor',;Color(Stringname,inti{_name=name;_id=id;}privateString_name;privateint_id;publicStringgetName(){return_name;}publicintgetId(){return_id;}//@Override//publicStringtoString(){//returnthis._namtoUpperCase();//}@OverridepublicvoidsetColor(){Systeout.println('Currentpaintcolor:'+_nam;}}}
自定义2018股票交易接口api,接口Paint,枚举Color实现该接口。
试想一下,为Paint选择color的同时是否可以指定Paint的类型呢?
我们改造这个Paint接口:
[java]viewplaincopyprint?interfacePaint{publicvoidsetColor();publicvoidsetType();}
枚举Color实现Paint:
[java]viewplaincopyprint?publicenumColorimplementsPaint{RED('redcolor',0),GREEN('greencolor',,BLUE('bluecolor',,YELLOW('yellowcolor',;Color(Stringname,inti{_name=name;_id=id;}privateString_name;privateint_id;publicStringgetName(){return_name;}publicintgetId(){return_id;}//@Override//publicStringtoString(){//returnthis._namtoUpperCase();//}@OverridepublicvoidsetColor(){Systeout.println('Currentpaintcolor:'+_nam;}@OverridepublicvoidsetType(){Systeout.println('Currentpainttype:'+'Howtodetermine??');}}
把这个问题具体化:
在选择RED的我想选择类型为5号的paint
在选择GREEN的我想选择类型为1号的paint,如何处理?
在前面的博客Java枚举:理解枚举本质中说到,
[java]viewplaincopyprint?packagemardemo;publicclassEnumDemo{publicstaticvoidmain(String[]args){for(Colorcolor:Color.values()){color.setColor();color.setType();}}interfacePaint{publicvoidsetColor();publicvoidsetType();}publicenumColorimplementsPaint{RED('redcolor',0){@OverridepublicvoidsetColor(){Systeout.println('Currentpaintcolor:'+RE_nam;}@OverridepublicvoidsetType(){Systeout.println('Currentpainttype:'+'5');}},GREEN('greencolor',{@OverridepublicvoidsetColor(){Systeout.println('Currentpaintcolor:'+GREE_nam;}@OverridepublicvoidsetType(){Systeout.println('Currentpainttype:'+'1');}},BLUE('bluecolor',{@OverridepublicvoidsetColor(){Systeout.println('Currentpaintcolor:'+BLU_nam;}@OverridepublicvoidsetType(){Systeout.println('Currentpainttype:'+'12');}},YELLOW('yellowcolor',{@OverridepublicvoidsetColor(){Systeout.println('Currentpaintcolor:'+YELLOW._nam;}@OverridepublicvoidsetType(){Systeout.println('Currentpainttype:'+'80');}};Color(Stringname,inti{_name=name;_id=id;}privateString_name;privateint_id;publicStringgetName(){return_name;}publicintgetId(){return_id;}}}
为了呈现不同的Paint,枚举可以让其每个枚举值实现接口。
推荐一篇博客:小谈JavaEnum的多态性
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点