0

我有以下 Java 代码,其中枚举数据类型用于创建基类的实例,如下所示: 主要抽象类:

public abstract class Element{
    static enum elements{
         quad8{Element create(){return new ElementQuad2D();}};
         abstract Element create();
    }
    public static Element newElement (String name){
         el=elements.valueOf(name);
         return el.create();
    }
    public Element (String name, int nind, int nstress){
        this.name = name;
        /*Do Something Else*/
    }
}

子类:

class ElementQuad2D extends Element{
    public ElementQuad2D(){
    super("quad8",8,4);
    }
}

如何创建上述枚举类型,以便我可以根据 PYTHON 中的“quad8”等元素名称创建不同子类的实例?

4

1 回答 1

0

这可以通过从字符串到类的字典轻松实现。子类的使用在这里不起作用:

class Element: pass

class ElementQuad2D(Element): pass

mapping = {'quad8': ElementQuad2D}
obj = mapping['quad8']()
print(obj)
#  <__main__.ElementQuad2D object at 0x01D70BD0>
于 2018-01-17T09:13:04.840 回答