首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写包含公共功能的两个枚举类的最佳方式是什么

编写包含公共功能的两个枚举类的最佳方式是什么
EN

Stack Overflow用户
提问于 2015-07-28 14:16:43
回答 2查看 65关注 0票数 0
代码语言:javascript
复制
public class Class1{
    public enum Enum1 {
        A("title") {
            public void process(SomeClass a) {
                String value = a.getTitle();
            }
        }, B("name") {
            public void process(SomeClass b) {
                String value = b.getName();
            }
        }

public class Class2{
    public enum Enum2 {
        A("title") {
            public void process(SomeClass a) {
                String value = a.getTitle();
            }
        }, C("desc") {
           public void process(SomeClass b) {
               String value = b.getDesc();
           }
        }

具有共同枚举A的Class1和Class2。如何将这两个通用枚举转换为通用枚举?

EN

回答 2

Stack Overflow用户

发布于 2015-07-28 14:32:34

为什么不自己创建一个包含如下内容的枚举文件:

代码语言:javascript
复制
public enum Enum {

    A {
        public void process(Object b) {
            //Do something
        }
    },
    B {
        public void process(Object b) {
            //Do something
        }
    },
    C {
        public void process(Object b) {
            //Do something
        }
    };

    public void process(Object b) {
        //Do something
    }
}

您可以将此枚举导入到其他类中,并非常简单地使用:

代码语言:javascript
复制
public static void main(String[] args) {
        Enum a = Enum.A;
        a.process("123");

    }
票数 0
EN

Stack Overflow用户

发布于 2015-07-28 21:42:12

这个代码快照怎么样?你在找这个吗?

代码语言:javascript
复制
public class Component {

    private String name;
    private String title;

    public Component(String name, String title) {
        this.name = name;
        this.title = title;
    }

    public String getName() {
        return this.name;
    }

    public String getTitle() {
        return this.title;
    }

    public static void main(String[] args) {
        Class1 class1 = new Class1(FieldsEnum.NAME);
        class1.process();

        Class2 class2 = new Class2(FieldsEnum.TITLE);
        class2.process();
    }
}

enum FieldsEnum {
    TITLE {
        public void process(Component component) {
            System.out.println("Process with : " + component.getTitle());
        }
    },
    NAME {
        public void process(Component component) {
            System.out.println("Process with : " + component.getName());
        }
    };

    public abstract void process(Component component);
}

class Base {
    public Base(FieldsEnum field) {
        this.field = field;
    }

    private FieldsEnum field;

    public FieldsEnum getField() {
        return field;
    }

    public void setField(FieldsEnum field) {
        this.field = field;
    }

    public void process() {
        this.field.process(new Component("HomePage", "HomeTitle"));
    }
}

class Class1 extends Base {
    public Class1(FieldsEnum field) {
        super(field);
    }

    // do you class1 specific work here
}

class Class2 extends Base {

    public Class2(FieldsEnum field) {
        super(field);
    }

    // do you class2 specific work here
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31668654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档