泛型通配符的用法,原因??
解决方案 »
- ?jfreechart如何画“双纵轴”的柱状图
- 请教Formula One打印问题
- 操作系统线程设计
- 请问:如何将JTextPane中的内容保存为HTML格式的文件
- 为什么说c++不是一种纯面向对象的语言,而Java是?!
- Java的Heap Size设置上究竟有什么用??(-Xmx,-Xms)
- javadoc怎么生成当前目录源程序的文档?没有用包。
- 在applet中如何响应一个鼠标点击事件来画一个方框?
- 关于字符串数组的值的问题
- 编译java文件时会自动寻找classpash路径下文件吗
- 关于javaSE泛型通配符的问题,哪位大神帮忙看看,有问号的语句,详细解释一下,谢了
- 1F8B0800开头的16进制字符串(据说是gzip格式)怎么转换成文件呢
集合可以是set, list, queue, 集合也可以包含不同对象。你该怎么写呢?你可以用raw type去解决,但是并不推荐
public void getCollectionSize(Collection theCollection){
return theCollection.size();
}如果使用参数类,就必须用到通配符了
public void getCollectionSize(Collection<?> theCollection){
return theCollection.size();
}这样 getCollectionSize 就可以接受任何集合类,比如 strings, numbers 还有objects
List<String> strings = new ArrayList<>();
Set<Integer> numbers = new HashSet<>();
Deque<Object> objects = new ArrayDeque<>();
int gap = a.length;// 增量
int j;
while (gap > 1) {
gap = gap / 3 + 1; // 以一定的增量进行跳跃式比较和交换
for (int i = gap; i < a.length; i++) {
int temp = a[i];
for (j = i - gap; j >= 0 && temp < a[j]; j -= gap) {
a[j + gap] = a[j];
}
a[j + gap] = temp;
}
}
}
然而JAVA中的泛型,由于在运行期间是擦除泛型信息的,所以称之为一种“类型安全保障”更合适点。
/****User extends People****/
ArrayList<People> list ;
ArrayList<User> list2 = new ArrayList<User>();
list = list2; //这里会报错
-------------------------------------
ArrayList<? extends People> list ;//这么写的话就可以
ArrayList<User> list2 = new ArrayList<User>();
list = list2; 通配符你可以简单的理解为 类型的通配