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