站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题Anmail fun() 返回个new Dog()有什么区别

Anmail fun() 返回个new Dog()有什么区别

摘要: Anmail fun() 返回个new Dog()有什么区别


import java.util.*;
class Outer {

public static List< ? super E> process( List nums){

return nums;

}


public static void main(String[] args) {

ArrayList input=null;
List output=null;
output=process(input);

}

}
public static List< ? super E> process( List nums)方法中List< ? super E> 返回类型是什么 为什么编译错误
这和 Anmail fun() 返回个new Dog()有什么区别



帮帮忙啊~~


java还可以这样写。。。。
不清楚


帮忙啊




? super E 表示E的父类List<? super E>就表示List里的内容必须是E的父类


是不是就是说内容必须是Number的子类?


这个问题其实很简单,因为process方法返回的是List<? super Integer>类型,而output被定义为List类型,前者是不能直接赋值给后者的。为什么呢?尽管Number是Integer的父类,但同时Object也是Integer的父类,所以一个List可以赋值给List<? super Integer>类型的变量,换句话说,一个List也是一个合法的List<? super Integer>,这时候如果再把这个包含Object类型的List<? super Integer>类型赋值给List是显然不可以的。


如果改成这样
output = (List)process(input);
那就可以通过编译


楼上编译会有警告


↑返回目录
前一篇: 谁能给我讲一下怎么在命令窗口中运行java程序啊????谢谢了
后一篇: 对数据库记录集排序?