我有一个以下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”)创建不同子类的实例?
最佳答案
这可以通过从字符串到类的字典轻松实现。子类的使用在这里不起作用:
class Element: pass
class ElementQuad2D(Element): pass
mapping = {'quad8': ElementQuad2D}
obj = mapping['quad8']()
print(obj)
# <__main__.ElementQuad2D object at 0x01D70BD0>