您可以继承一个泛型类,保留其类型持有者,并新增自己的类型持有者,例如先写一个父类:
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; } }
|