java泛型测试
import java.lang.*;
import java.util.*;
public class Test {
public static void main(String[] str) {
List<B> arr = new ArrayList<B>(10);
List<A> arr2 = new ArrayList<A>(10);
Why(new A());
Why(new B());
doTest(new ArrayList<String>(123));
doTest(arr);
doTest(arr2);
ExecTest(arr);
ExecTest(arr2);
}
static <T extends A> void Why(T mm) {
}
static <T> void doTest(List<T> list) {
}
static void ExecTest(List<? extends A> list) {
}
}
class A {
}
class B extends A {
}
import java.util.*;
public class Test {
public static void main(String[] str) {
List<B> arr = new ArrayList<B>(10);
List<A> arr2 = new ArrayList<A>(10);
Why(new A());
Why(new B());
doTest(new ArrayList<String>(123));
doTest(arr);
doTest(arr2);
ExecTest(arr);
ExecTest(arr2);
}
static <T extends A> void Why(T mm) {
}
static <T> void doTest(List<T> list) {
}
static void ExecTest(List<? extends A> list) {
}
}
class A {
}
class B extends A {
}
一段关于泛型嵌套的代码:
static <T> void right(List<? extends List<T>> lvData, List<T> refreshData) { } static <T> void error(List<List<T>> lvData, List<T> refreshData) { } public static void main(String args[]) throws Exception { List<ArrayList<Object>> data = null; ArrayList<Object> moreData = null; //编译通过 right(data, moreData); //编译报错 error(data, moreData); }