假設我有這些接口:實現多個接口預仿製藥使用參數
public interface I1 {
void foo();
}
public interface I2 {
void bar();
}
和類:
public class A extends AParent implements I1, I2 {
// code for foo and bar methods here
}
public class B extends BParent implements I1, I2 {
// code for foo and bar methods here
}
public class C extends CParent implements I1 {
// code for foo method here
}
現在,隨着仿製藥我能有這樣的方法:
public <T extends I1 & I2> void method(T param) {
param.foo();
param.bar();
}
我可以用A和B作爲參數來調用它,但不能用C(它不實現I2)來調用它。
有沒有辦法實現這種類型的安全預泛型(java < 1.5)。
考慮到A,B和C具有不同的繼承樹,並且它不是一個真正的選項,可以像AParent和BParent一樣擁有一個共同的父項。
我知道你可以這樣做:
public void method(I1 param) {
param.foo();
((I2)param).bar();
}
但你也可以撥打method(new C())
不落實I2,讓你陷入困境。
那麼有沒有其他方法可以做到這一點?
P.S. :我不需要這麼做,我主要是出於好奇而問。
我有點意識到這一點後,我問的問題,但如果你有兩個以上的接口,並希望混合和匹配那些不同的方法,它有可能成爲爲每個你想要使用的組合創建一個子界面。我正在考慮更多地採用像'method(I1&I2 param)'這樣的方法或者其他方式來說明參數在旅途中實現多個接口(不創建新的類/接口) – 2010-06-24 08:22:25
我不認爲這從設計的角度來看很好。請看我的答案。 – hqt 2016-04-30 13:32:56