我有兩個具有相同的實現,但名稱不同的類。它們產生的,我無法對它們進行修改:如何實現對兩個相同類的引用?
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或酒吧根據需要。概念上:
FooOrBar fob = ????;
fob.setName("XYZ");
Foo f = fob.(???);
Bar b = fob.(???);
我已經研究過泛型,但它似乎是當你真的不知道你將在什麼類上運行。我有可能有某種類型的類或參考達到此目的嗎?
7月26日編輯:
道歉,如果這是不好的形式後續UPS這樣的,我可以張貼新的如果需要的話。我正在實施Tomasz的Adapter模式,但我的最後一步與他不同。我需要接口對象的條件賦值。下面是我所擁有的,到目前爲止我沒有收到任何錯誤或警告,但我想知道這是不是出於某種原因的好習慣?也許我應該使用反射或泛型來確定接口的類?這將是一種只有我的代碼會調用的方法,我會知道這個情況。我已經搜索了條件接口的分配,但沒有找到太多。
FooOrBar fob; //interface
if (condition true) {
fob = new FooAdapter(); //FooAdapter implements FooOrBar
} else {
fob = new BarAdapter(); //BarAdapter implements FooOrBar
}
fob.setName("XYZ");
撰寫超,讓富,酒吧擴展它(或)寫的接口和讓Foo/Bar實現它。 – kosa 2012-07-25 17:51:03
我同意thinksteep,但如果你不能修改類以擺脫重複,我猜你不能修改它們來實現一個接口。這些類是否真的是相同的,如果是這樣,爲什麼它們是以這種方式創建的? – Bobulous 2012-07-25 17:53:18
這些類是相同的,它們是通過目標系統的wsdl消耗創建的,我無法修改wsdl。目標系統爲資源創建和更新生成單獨的消息,但它是完全相同的數據。 – user640118 2012-07-25 18:02:23