【发布时间】:2011-12-16 05:27:47
【问题描述】:
我很确定我可以用 Java 泛型解决这个问题,所以我想问...假设我有几个类,每个类都实现一个公共接口,公共接口中有一个方法称为 getData,我想让它通用。我遇到的问题是每个类都返回不同的对象类型,所以理想情况下我希望这些是通用的,然后在调用getData 的实现类中,将它们转换回它们的原始类型。如果我要转换为 Object 并返回到特定类型,我可以看到它是如何工作的,但是我可以使用泛型实现相同的最终结果吗?
这里有一些伪代码来概括问题:
public ClassA implements interface x {
private CustomObjectA customObjectA;
private Map<DateTime, Map<String, CustomObjectA>> dataMap;
...
public Map<DateTime, Map<String, CustomObjectA>> getData() {
return this.dataMap;
}
}
public ClassB implements interface x {
private CustomObjectA customObjectB;
private Map<DateTime, Map<String, CustomObjectB>> dataMap;
...
public Map<DateTime, Map<String, CustomObjectB>> getData() {
return this.dataMap;
}
}
public interface x {
public Map<DateTime, Map<String, genericObject>> getData();
}
public ClassC {
public testGeneric(x objX) {
CustomObjectA cOA = objX.getData();
CustomObjectB cOB = objX.getData();
}
}
【问题讨论】:
-
CustomObjectB 和 CustomObjectA 完全不相关吗?
-
是的,他们的成员完全不同