问题在代码中:
import java.util.*;
class Test1{}
class aa extends Test1{}
class bb extends Test1{}
class cc extends Test1{}
class dd extends aa{}
class ee extends aa{}
class ff extends aa{}public class Test{
public static void main(String[] args){
/**问题一:**/
//这句能编译
Collection<Test1> test1 = Arrays.asList(new aa(),new bb(),new dd(),new ee());
//为什么这句就不能编译??
Collection<Test1> test1 = Arrays.asList(new dd(),new ee());
/**问题二:**/
List<Test1> test1 = new ArrayList<Test1>(Arrays.asList(new aa(),new bb()));
List<Test1> test1 = new ArrayList<Test1>(Arrays.asList(new dd(),new ee()));
//为什么这句就不能编译??
List<Test1> test1 = new ArrayList(Arrays.asList(new aa(),new bb()));
}
}
import java.util.*;
class Test1{}
class aa extends Test1{}
class bb extends Test1{}
class cc extends Test1{}
class dd extends aa{}
class ee extends aa{}
class ff extends aa{}public class Test{
public static void main(String[] args){
/**问题一:**/
//这句能编译
Collection<Test1> test1 = Arrays.asList(new aa(),new bb(),new dd(),new ee());
//为什么这句就不能编译??
Collection<Test1> test1 = Arrays.asList(new dd(),new ee());
/**问题二:**/
List<Test1> test1 = new ArrayList<Test1>(Arrays.asList(new aa(),new bb()));
List<Test1> test1 = new ArrayList<Test1>(Arrays.asList(new dd(),new ee()));
//为什么这句就不能编译??
List<Test1> test1 = new ArrayList(Arrays.asList(new aa(),new bb()));
}
}
返回后类型变成List<aa>
无法转换成Collection<Test1>
我是jdk1.6
不过我想既然你要对list使用范型进行类型控制
那么最好都加上,否则类型控制起什么作用呢?
就这句有问题,问题楼上已经指出.
List<Test1> test1 = new ArrayList(Arrays.asList(new aa(),new bb()));
这句没问题.是不是你多个test1一起编译的?
import java.util.Arrays;
import java.util.Collection;
import java.util.List;class Test1 {}
class aa extends Test1 {}
class bb extends Test1 {}
class cc extends Test1 {}
class dd extends aa {}
class ee extends aa {}
class ff extends aa {}public class TestLim0528 { public static void main(String[] args) {
/** 问题一: **/
//这句能编译
Collection<Test1> test1 = Arrays.asList(new aa(), new bb(), new dd(), new ee());
//为什么这句就不能编译??
//Collection<Test1> test1 = Arrays.asList(new dd(),new ee());
//asList 是 Arrays 类的泛型方法,得这样用:
Collection<Test1> test2 = Arrays.<Test1>asList(new dd(), new ee());
/** 问题二: **/
List<Test1> test3 = new ArrayList<Test1>(Arrays.asList(new aa(),new bb()));
List<Test1> test4 = new ArrayList<Test1>(Arrays.asList(new dd(),new ee()));
//为什么这句就不能编译??
//List<Test1> test1 = new ArrayList(Arrays.asList(new aa(),new bb()));
//因为你 test1 声明成了泛型类型的对象变量,修改如下:
List<Test1> test5 = new ArrayList<Test1>(Arrays.asList(new aa(), new bb()));
//更严格应该写成:
List<Test1> test6 = new ArrayList<Test1>(Arrays.<Test1>asList(new aa(), new bb()));
}}