我有两个具有相同实现但名称不同的类。它们是生成的,我无法修改它们:
public class Foo {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Bar {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我需要用数据填充这些类,并且由于它们是相同的,因此更愿意使用单个类或引用来完成,然后根据需要强制转换为(或希望解决方案更优雅)Foo 或 Bar。从概念上讲:
FooOrBar fob = ????;
fob.setName("XYZ");
Foo f = fob.(???);
Bar b = fob.(???);
我已经研究过泛型,但它似乎是为了当你真的不知道你将在哪个类上运行时。我是否有可能拥有某种类型的类或参考来实现这一目标?
7月26日编辑:
抱歉,如果这样的跟进形式不好,我可以在需要时发布新的。我正在实施 Tomasz 的适配器模式,但我的最后一步与他的不同。我需要接口对象的条件分配。以下是我所拥有的,到目前为止我没有收到任何错误或警告,但我想知道这是否出于某种原因不是好的做法?也许我应该使用反射或泛型来确定接口的类?这将是一个只有我的代码会调用并且我会知道条件的方法。我搜索了条件接口分配,但没有找到太多。
FooOrBar fob; //interface
if (condition true) {
fob = new FooAdapter(); //FooAdapter implements FooOrBar
} else {
fob = new BarAdapter(); //BarAdapter implements FooOrBar
}
fob.setName("XYZ");