Van Pan

导航

Java 通配符泛型例子

请看下面的代码,其中会发生错误的代码已经注释掉,并且写明了错误类型

总体来说,泛型通配符就是为了支持多态时父子类,接口扩展类之间的相互转换而生


package test;

import java.util.ArrayList;
import java.util.List;

public class GenericTester {
public static void main(String[] args){
GenericTester genericTester=new GenericTester();
List<TestA> list=new ArrayList<GenericTester.TestA>();
GenericTester.TestA tester=genericTester.new TestA();
list.add(tester);
TryGeneric1(list);
TryGeneric2(list);
// TryGeneric3(list);  has compile error
// TryGeneric4(list);  has compile error
}
private interface ITest{
public void Test();
}
private class TestA implements ITest{

@Override
public void Test() {
// TODO Auto-generated method stub
System.out.println("TestA");
}
}
private static void TryGeneric1(List<? extends ITest> testList){
for(ITest tester:testList){
tester.Test();
}
}
private static void TryGeneric2(List<?> testList){
// for(ITest tester:testList)   // cause error
for(Object tester:testList){
((ITest)tester).Test();
}
}
private static void TryGeneric3(List<ITest> testList){
for(ITest tester:testList){
((ITest)tester).Test();
}
}
private static void TryGeneric4(List<Object> testList){
for(Object tester:testList){
((ITest)tester).Test();
}



posted on 2012-08-18 16:29  Van Pan  阅读(212)  评论(0编辑  收藏  举报