ListGenericFoo
package org.wp.generic;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListGenericFoo<T extends List> {
private T[] fooArray;
public T[] getFooArray() {
return fooArray;
}
public void setFooArray(T[] fooArray) {
this.fooArray = fooArray;
}
public static void main(String args[]) {
ListGenericFoo<LinkedList> foo1 = new ListGenericFoo<LinkedList>();
ListGenericFoo<ArrayList> foo2 = new ListGenericFoo<ArrayList>();
LinkedList[] linkedList1 = new LinkedList[10];
ArrayList[] arrayList = new ArrayList[10];
foo1.setFooArray(linkedList1);
foo2.setFooArray(arrayList);
}
}
GenericFoo
package org.wp.generic;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public class GenericFoo<T> {
private T foo;
public T getFoo() {
return foo;
}
public void setFoo(T foo) {
this.foo = foo;
}
public static void main(String args[]) {
GenericFoo<? extends List> foo = null;
foo = new GenericFoo<LinkedList>();
foo = new GenericFoo<ArrayList>();
GenericFoo<? super List> foo1 = null;
foo1 = new GenericFoo<Object>();
foo1 = new GenericFoo<Collection>();
GenericFoo<String> foo2 = new GenericFoo<String>();
foo2.setFoo("hello world");
// GenericFoo<?> 等价于 GenericFoo<? extends Object>
GenericFoo<? extends Object> foo3 = foo2;
System.out.println(foo3.getFoo());
foo3.setFoo(null);
System.out.println(foo3.getFoo());
// 错误 foo3.setFoo("welcome");
}
}
本文介绍了一个使用Java泛型的具体例子,展示了如何定义泛型类并使用不同类型的泛型参数实例化这些类。通过两个泛型类`ListGenericFoo`和`GenericFoo`的实现,演示了如何操作泛型数组及如何利用类型通配符进行类型限制。
413

被折叠的 条评论
为什么被折叠?



