generic-泛型理解和使用
2022/6/11 23:54:06
本文主要是介绍generic-泛型理解和使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1- 泛型的理解
/* 1- 泛型的"抽象理解": 就像(公共厕所的图标,他规定了--男士去哪,女生去哪),男士进男厕所,女生进女厕所 ---> 对应String去String,Integer去Integer 2- 泛型的"体验": 1- 泛型的体验 --请看Test1和Test2,的对比实验 3- 在集合中使用泛型(的总结) 1- 在时例化集合时候,可以指明具体的泛型类型 ArrayList list = new ArrayList(); --> 没有泛型 ArrayList<Integer> list = new ArrayList<Integer>(); --> 有泛型 2- 指明以后,在集合类或者接口中凡事定义类或者接口的时候,内部结构(比如:方法、构造器、属性 ···)使用到类的泛型的位置,都指定为实例化的泛型类型。 比如:add(E A) ---> add(Integer A) 3- 注意点:泛型的类型,必须是"类",不能是"基本数据类型",·如果需要用到"基本数据类型",我们可以拿包装类替换 */
2- 泛型的体验/使用
public class Generic_Test { @Test //1- 在没使用"泛型"之前的情况 public void test1() { ArrayList list = new ArrayList(); //2- 给没有"泛型"的集合赋值 list.add(21); list.add(25); list.add(29); list.add(67); list.add("Tom"); //3- 把list的集合,放到int里面 for (Object score : list) { int studentScore = (int) score; //4- 输出会爆出-ClassCastException问题 --因为"Tom"不是int类型的 System.out.println(studentScore); } } @Test //1- 使用"泛型"后 public void test2() { //2- 使用了<>泛型 ArrayList<Integer> list = new ArrayList<Integer>(); list.add(21); list.add(25); list.add(29); list.add(67); //3- 使用了"泛型"所以 -- 除了泛型定义的类型,其他类型不能填入 // list.add("Tom"); --> 型不匹配 //4- 把list的集合,放到int里面 for (Integer score : list) { int studentScore = score; System.out.println(studentScore); } } @Test //在集合中使用"泛型"的情况:以HashMap为例子 public void test3(){ HashMap<String, Integer> map = new HashMap<String, Integer>(); //1- 赋值 map.put("Tom",187); map.put("Java",187); map.put("Web",187); map.put("chenxixi",187); //2- 泛型的嵌套(目的:便利Map集合) Set<Map.Entry<String, Integer>> entries = map.entrySet(); Iterator<Map.Entry<String, Integer>> iterator = entries.iterator(); while (iterator.hasNext()){ Map.Entry<String, Integer> next = iterator.next(); String key = next.getKey(); Integer value = next.getValue(); System.out.println(key +" -----> "+ value); } } }
这篇关于generic-泛型理解和使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享