List<?>和List<T>的区别
2017-10-13 15:07
204 查看
是java泛型的两种用法:List<T>是泛型方法,List<?>是限制通配符
List<T>一般有两种用途:
1、定义一个通用的泛型方法。
伪代码:
上面接口的getList方法如果定义成List<?> ,后面就会报错。‘
2、限制方法的参数之间或参数和返回结果之间的关系。
这样可以限制返回结果的类型以及两个参数的类型一致。
List<?>一般就是在泛型起一个限制作用。
伪代码:
[/code]
作者:zane zhou
链接:https://www.zhihu.com/question/31429113/answer/51906707
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
List<T>一般有两种用途:
1、定义一个通用的泛型方法。
伪代码:
public interface Dao{ List<T> getList(){}; } List<String> getStringList(){ return dao.getList();//dao是一个实现类实例 } List<Integer> getIntList(){ return dao.getList(); }
上面接口的getList方法如果定义成List<?> ,后面就会报错。‘
2、限制方法的参数之间或参数和返回结果之间的关系。
List<T> getList<T param1,T param2>
这样可以限制返回结果的类型以及两个参数的类型一致。
List<?>一般就是在泛型起一个限制作用。
伪代码:
public Class Fruit(){} public Class Apple extends Fruit(){} public void test(? extends Fruit){}; test(new Fruit()); test(new Apple()); test(new String()); //这个就会报错
这样可以现在test方法的参数必须是Fruit或其子类。
[/code]
作者:zane zhou
链接:https://www.zhihu.com/question/31429113/answer/51906707
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
相关文章推荐
- List<?super T> 和 Set<? extends T> 区别
- java.util.LinkedList<E>中offer和add的区别
- string[]和List<string>区别
- IList<T>和List<T>区别
- Java泛型:List<?>与List的区别
- C#中IList<T>与List<T>的区别深入解析
- 【转】list<T>与ObservableCollection<T>的区别
- List<?>和List<T>的区别
- C#中IList<T>与List<T>的区别深入解析
- 关于List<T>中的Exists 和Contains的区别
- 泛型-java与.NET中List<T>的区别
- C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别
- List<?>和List<T>的区别?以及List 和List<Object>的关系
- C#中IList<T>与List<T>的区别感想
- C#中Array与ArrayList与泛型数组 list<>的区别
- C#中的[],Array,List<>,ArrayList的区别
- List<T>与ArrayList的区别
- List<String> 和 ArrayList<String>的区别
- return null 与return new List<HaierPageView>()的区别
- C#中的数组、ArrayList、List<T>的区别