您可以擴充一個泛型類別,保留其型態持有者,並新增自己的型態持有者,例如先寫一個父類別:
public class GenericFoo<T1, T2> { private T1 foo1; private T2 foo2; public void setFoo1(T1 foo1) { this.foo1 = foo1; } public T1 getFoo1() { return foo1; } public void setFoo2(T2 foo2) { this.foo2 = foo2; } public T2 getFoo2() { return foo2; } }
再來寫一個子類別擴充上面的父類別:
public class SubGenericFoo<T1, T2, T3> extends GenericFoo<T1, T2> { private T3 foo3; public void setFoo3(T3 foo3) { this.foo3 = foo3; } public T3 getFoo3() { return foo3; } }
如果決定要保留型態持有者,則父類別上宣告的型態持有者數目必須齊全,也就是說上式中,T1與T2都要出現,如果不保留型態持有者,則繼承下來的T1與
T2自動變為Object,建議當然是父類別的型態持有者都保留。
介面實作也是類似,例如先定義一個介面:
public interface IFoo<T1, T2> { public void setFoo1(T1 foo1); public void setFoo2(T2 foo2); public T1 getFoo1(); public T2 getFoo2(); }
實作時如下,保留所有的型態持有者:
public class GenericFoo<T1, T2> implements IFoo<T1, T2> { private T1 foo1; private T2 foo2; public void setFoo1(T1 foo1) { this.foo1 = foo1; } public T1 getFoo1() { return foo1; } public void setFoo2(T2 foo2) { this.foo2 = foo2; } public T2 getFoo2() { return foo2; } }
|