ITEEDU

泛型类中的泛型类

如果您已经定义了一个泛型类别,想要用这个类别来于另一个泛型类别中宣告成员的话要如何作?举个实例,假设您已经定义了下面的类别:

GenericFoo.java
public class GenericFoo<T> {
	private T foo;
	public void setFoo(T foo) {
		this.foo = foo;
	}
	public T getFoo() {
		return foo;
	}
}

您想要写一个包装类别(Wrapper),这个类别必须也具有GenericFoo的泛型功能,您可以这么写:

WrapperFoo.java
public class WrapperFoo<T> {
	private GenericFoo<T> foo;
	public void setFoo(GenericFoo<T> foo) {
		this.foo = foo;
	}
	public GenericFoo<T> getFoo() {
		return foo;
	}
}

这么一来,您就可以保留型态持有者 T 的功能,一个使用的例子如下:

GenericFoo<Integer> foo = new GenericFoo<Integer>();
foo.setFoo(new Integer(10));

WrapperFoo<Integer> wrapper = new WrapperFoo<Integer>();
wrapper.setFoo(foo);