【发布时间】:2015-02-23 10:36:18
【问题描述】:
我有一个设计问题。 我有一个读取 XML 的接口。每个实现者类都读取不同的 XML,我想要一种方法来确定我应该为我得到的 xml 类型动态创建哪个实现者。 问题是java接口不能有静态成员。最好的方法是什么?
例子:
public interface MyXML{
public void readXML(String xml);
public final static String getType();
}
用法:
func(String xml, String type)
{
MyXML obj;
switch(type)
{
case MyImpl.getType():
obj = new MyImpl();
break;
case MyImpl2.getType():
obj = new MyImpl2();
break;
}
obj.readXML(xml);
}
编辑: 我将尝试更好地解释我想要的内容: 我需要知道哪个实现可以读取哪个 xml,并且我寻找一种方法来强制实现 MyXML 的任何人告诉它可以读取哪个 xml,这样我就不需要在另一个列表或工厂之外维护翻译。
【问题讨论】:
-
"MyImpl.getType()" 应该是常量,而不是在运行时动态评估。
-
什么意思:Java接口不能有静态成员?接口中的所有变量都是静态的。
-
Stultuske: public final static String getType();对编译无效。
标签: java