当前位置: 代码迷 >> java >> 编写包含通用功能的两个枚举类的最佳方法是什么
  详细解决方案

编写包含通用功能的两个枚举类的最佳方法是什么

热度:64   发布时间:2023-08-04 09:26:18.0
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();
           }
        }

Class1和Class2具有相同的枚举A。 我怎样才能使两个通用枚举成为通用枚举?

为什么不制作自己的枚举文件,其内容如下:

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
    }
}

您可以在其他类中导入该枚举,并非常简单地使用它:

public static void main(String[] args) {
        Enum a = Enum.A;
        a.process("123");

    }

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

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
}
  相关解决方案