当前位置:  开发笔记 > 编程语言 > 正文

Java可扩展枚举

如何解决《Java可扩展枚举》经验,为你挑选了4个好方法。

有没有办法编写可以扩展的枚举.我有几种方法可以随时提供给我的枚举.例如,我对我的数据库字段使用枚举.我在数据库中包含实际的字段名称.

public enum ORDERFIELDS
        {
            OrderID("Order_ID");
            private String FieldName;

            private ORDERFIELDS(String fname)
                {
                    this.FieldName = fname;
                }

            public String getFieldName()
                {
                    return FieldName;
                }
        } 

Guido.. 16

所有枚举都隐含地扩展java.lang.Enum.由于Java不支持多重继承,因此枚举不能扩展其他任何内容.



1> Guido..:

所有枚举都隐含地扩展java.lang.Enum.由于Java不支持多重继承,因此枚举不能扩展其他任何内容.



2> Dónal..:

如果我理解正确,你想做的是这样的:

public abstract class DatabaseField {
    private String fieldName;

    private DatabaseField(String fieldName) {
        this.fieldName = fieldName;
    }

    public String getFieldName() {
        return fieldName;
    }
}

然后定义你的枚举来扩展这个类.但是,遗憾的是枚举不能扩展类,但它可以实现一个接口,所以你现在可以做的最好的事情是定义一个包含getFieldName()方法的接口,并让你所有的枚举实现这个接口.

但是,这意味着您必须在所有枚举中复制此方法(以及任何其他方法)的实现.在这个问题中有一些关于如何最小化这种重复的建议.



3> 小智..:

枚举可以实现接口但不能扩展,因为在编译时它们会转换为java.lang.Enum.



4> Alex Miller..:

抽象枚举可能非常有用(目前不允许).但是,如果您想在Sun中为某个人添加游戏来添加它,则存在一个提案和原型:

http://freddy33.blogspot.com/2007/11/abstract-enum-ricky-carlson-way.html

Sun RFE:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570766

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有