【发布时间】:2018-01-16 09:44:33
【问题描述】:
我有以下 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”等元素名称创建不同子类的实例?
【问题讨论】:
-
为什么? 这似乎是一个 XY 问题。你到底想达到什么目的?您正在尝试采用 Java 设计模式并将其扔给 Python,并且可能有一种更简单的方法来完成您想要在这里实现的任何目标
-
我想要实现的是,当我以名称为参数调用方法“newElement”时,比如“quad8”,我应该能够调用子类“ElementQuad2D()”的构造函数来自枚举“元素”。我当前在 Python 中的实现涉及一堆 if else 语句,如果我实现了许多这样的元素类型,这些语句就会有问题。我不想要确切的实现,但要接近这个。
标签: java python oop enums abstract-base-class