码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Java】泛型


    泛型的概述

    1. Java泛型(generics)是JDK1.5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
    2. 早期的时候,使用Object来代表任意类型。但是这样在向上转型时没有问题的,但是向下转型的时候存在类型转换的问题,这样的程序其实是不安全的。所以Java在JDK1.5之后提供了泛型来解决这个问题
    3. 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
    4. 泛型是一种类型的明确工作推迟到创建对象或者调用方法的时候才去明确的特殊类型。

    注意:类型参数只能代表引用类型,不能是原始类型(例 int,double,char等)。

    泛型可以使用在 方法、接口、类 分别称作为:泛型类、泛型方法、泛型接口。


    示例代码

    1. package com.collection.Demo05;
    2. import java.util.ArrayList;
    3. import java.util.Iterator;
    4. public class Test01 {
    5. public static void main(String[] args) {
    6. // 定义ArrayList集合,所存放的类型都是String类型
    7. // 泛型是在编译阶段 限制 类型 就是为 泛型指定的类型
    8. ArrayList arrayList = new ArrayList();
    9. arrayList.add("mayikt");
    10. // arrayList.add(1)//只能存放String类型
    11. /**
    12. * JDK1.5之前没有泛型
    13. * new 集合 没有指定泛型
    14. * 存放的类型是为Object类型
    15. * 下面演示JDK1.5没有泛型如何处理
    16. */
    17. ArrayList arrayList1 = new ArrayList();
    18. ArrayList arrayList2 = new ArrayList();//上下两句等价,默认泛型是Object
    19. arrayList2.add("mayikt01");
    20. arrayList2.add("mayikt02");
    21. arrayList2.add("mayikt03");
    22. arrayList2.add(666);//编译时不会报错,∵都是Object类型,下面将Object —> String,在转换时这行就会报错,
    23. // 在if(object instanceof String) 只将Object为String类型的转为String,这个Integer类型不转,
    24. // 就会忽略这个元素,不会报错,也不会遍历,想让该Integer类型遍历出来,就需要在写一个if(object instanceof Integer)
    25. Iterator iterator = arrayList2.iterator();
    26. while (iterator.hasNext()) {
    27. //如果取出ArrayList 集合中的元素 类型是Object类型
    28. //类型抓换 Object -> String
    29. //为了类型转换异常——需要先判断类型
    30. Object object = iterator.next();
    31. //如果object元素的类型是为String
    32. if (object instanceof String) {
    33. String str = (String) object;
    34. System.out.println(str);
    35. }
    36. if (object instanceof Integer) {
    37. Integer integer = (Integer) object;
    38. System.out.println(integer);
    39. }
    40. // String str = (String) iterator.next();
    41. // System.out.println(str);
    42. // System.out.println(iterator.next());
    43. }
    44. }
    45. }

    46. 下一篇文章:泛型类

    47. 相关阅读:
      数据可视化让您业务数据安全和高性能的聚合,为实时数据可视化和决策提供保障
      ROS2导航运行TurtleBot模拟器报错
      昇思25天学习打卡营第15天|基于 MindSpore 实现 BERT 对话情绪识别
      Linux ____02、Linux开关机、目录介绍、文件目录相关命令(常用命令)
      GUI设计——PyQt5快速入门
      如何在Qt6中引入Network模块
      2021-07-09 springboot 整合shiro(前后端分离解决方案)
      【力扣SQL】几个常见SQL题
      苹果收购DarwinAI,引领设备上AI运行新时代,隐私保护再升级
      利用python写一个可视化的界面
    48. 原文地址:https://blog.csdn.net/qq_57268251/article/details/133966740
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号