了解到的一些泛型知识,以及在此过程中遇到的问题
2017-08-15 19:47
363 查看
package cn.sdut.generictype; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; /* * 泛型通配符 以及上限 下限 擦除 堆污染 */ public class GenericDemo { public static void main(String[] args) { /* 堆污染: 当一个方法即使用泛型又使用可变参数,此时就容易导致堆污染 * * 如 Arrays中asList方法 * 特别注意 使用此方法返回的List不能Add和remove */ Integer[] a = {1,2,3,4}; List<Integer> list4 = Arrays.asList(a); System.out.println(list4.toString()); // list4.add(5);会运行报错 // list4.remove(0);会运行报错 //解决办法:两种 // 第一种: List<Integer> list5 = new ArrayList<Integer>(list4); /* 第二种: List<Integer> list5 = new ArrayList<Integer>(); Collections.addAll(list5, a); list5.add(11);//正常 System.out.println(list5);*/ // Collections.copy();这个方法也有坑 看一看http://www.2cto.com/kf/201701/586860.html //泛型的擦除 /* * 1.泛型编译后就没了 * 2.当把带有泛型的集合付给不带泛型的集合,泛型就被擦除了 */ List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); List list2 = new ArrayList(); list2 = list1; List<String> list3 = new ArrayList<String>(); list3 = list2; String str = list3.get(0);//此时报错 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String } private static void dowork(List<?> list) { } //上限 此时 必须是 Number或子类 private static void show(List<? extends Number> list) { } //下限 此时 必须是 Number或父类 private static void show2(List<? super Number> list) { } }
相关文章推荐
- hive安装过程中遇到的一些问题以及解决方案
- Ubuntu上安装MySql过程,以及遇到的一些问题
- 安装python caffe过程中遇到的一些问题以及对应的解决方案
- vivi以及内核编译过程以及其中遇到的一些问题
- Android程序的反编译和防止反编译,以及操作过程中遇到的一些问题
- ssh开发过程中遇到的问题,以及一些解决办法
- Ubuntu12.04编译openwrt过程中遇到的一些问题及处理方法
- win、Linux下安装redis以及安装过程中所遇到的问题
- VS2012/2013 工程在编译过程中遇到的一些问题?
- 学习jquery过程中遇到的一些问题
- 最近这段时间开发过程中遇到的一些细节问题汇总
- 使用MFC过程中遇到的问题以及解决方法(二)
- Python在ubuntu上面的安装,遇到的问题,以及一些有用的python库安装
- PowerDesigner16.5快速入门显示,注释comment配置方法,以及创建sql文件过程中需要注意的一些问题
- HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源、特性、算法等多个方面进行对比总结。力争多角度、全方位的展示二者的不同,做到此问题的终结版。
- Android中so使用知识和问题总结以及插件开发过程中加载so的方案解析
- vbox虚拟机装centOS教程链接,以及自己搭建过程中遇到的一些坑
- 在Linux(CentOS6.2)服务器上配置hadoop时遇到的一些问题以及一些解决办法
- Hibernate | Spring JPA | MySQL 使用过程遇到的一些问题
- Asp.Net Forms认证在移动平台中遇到的一个问题以及调查过程