从枚举变量返回类

时间:2017-01-01 23:14:38

标签: java

    public Object selectClass(Enumvar var){
    switch(var){
    case SOMETHING:
         return new OneClass();
    case SOMETHINGELSE:
         return new AnotherClass();

    return null;
    }

所以我会打电话给

selectClass(SOMETHING).Somefunction();

有可能是这样的吗?

2 个答案:

答案 0 :(得分:0)

您需要引入一个声明该方法的接口/类,并让所有类返回实现/扩展。

public interface Something {
    void Somefunction();
}

public Something selectClass(Enumvar var){
   switch(var){
   case SOMETHING:
     return new OneClass();
   // ...
 }

答案 1 :(得分:0)

是的,另一种方法:

public interface Instance {
    void Somefunction();
}

public interface InstanceClass {
    public Instance create();
}

public enum Enumvar implements InstanceClass {
    SOMETHING {
        public Instance create() { return new OneClass(); }
    },
    SOMETHINGELSE {
        public Instance create() { return new AnotherClass(); }
    };
}

您现在可以写:

SOMETHING.create().SomeFunction();

或:

SOMETHINGELSE.create().SomeFunction();