泛型

* Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常.

* 泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

* 泛型应用:参数化类型:把类型当作是参数一样传递, <数据类型>  其中只能是引用类型。

* 早期Java是使用Object来代表任意类型的,但是向下转型有强转的问题,这样程序就不太安全,1.5以后有了泛型

        - 首先,我们来试想一下:没有泛型,集合会怎么样

          - Collection、Map集合对元素的类型是没有任何限制的。本来我的Collection集合装载的只能是全部的Dog对象,但是外边把Cat对象存储到集合中,是没有任何语法错误的。

          - 把对象扔进集合中,集合是不知道元素的类型是什么的,仅仅知道是Object。因此在get()的时候,返回的是Object。外边获取该对象,还需要强制转换

        - 有了泛型以后:

          - 代码更加简洁【不用强制转换】

          - 程序更加健壮【只要编译时期没有警告,那么运行时期就不会出现ClassCastException异常】

          - 可读性和稳定性【在编写集合的时候,就限定了类型】
  • 有了泛型后使用增强for遍历集合

       -  在创建集合的时候,我们明确了集合的类型了,所以我们可以使用增强for来遍历集合!
    
                //创建集合对象
    ArrayList<String> list = new ArrayList<>(); list.add("hello");
    list.add("world");
    list.add("java"); //遍历,由于明确了类型.我们可以增强for
    for (String s : list) {
    System.out.println(s);
    }
  • 实现类的要是重写父类的方法,返回值的类型是要和父类一样的!

  • 类上声明的泛形只对非静态成员有效

  • 泛型是一种编译阶段的语法,在编译阶段统一集合中的类型

      

         import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class GenericTest02 {
public static void main(String[] args) {
//泛型是一种编译阶段的语法
//在编译阶段统一集合中的类型 //创建带有泛型限定的List集合
List<String> list=new ArrayList<String>(); //这样代表集合中只能存储String类型的元素 //向集合中添加元素
list.add("2021年4月5日");
list.add("14:57");
list.add("多云");
//list.add(1); 添加不进去 //遍历集合
//创建带有泛型的迭代器
Iterator<String> iterator=list.iterator();
while(iterator.hasNext()){
String str=iterator.next(); //可以使用String类型变量进行接受数据
System.out.println(str);
}
}
}

Day11_54_泛型(Generic)的更多相关文章

  1. Java - 泛型 ( Generic )

    Java - 泛型 ( Generic )     > 泛型的特点         > 解决元素存储的安全性问题         > 解决获取数据元素时,需要类型强转的问题     ...

  2. Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口

    Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器 ...

  3. 谈一谈从 Delphi 2009 之后就支援的重要功能 – 泛型 (Generic)

    前言 在C++的语言基础当中,除了物件导向.事件驱动的概念之外,模版设计(Template)也是非常重要的一环.然而,C++的开发人员能够善用模版设计的并不多.模版设计这个好物,一般还有一个名称,就是 ...

  4. JAVA中的泛型(Generic)

    Java泛型(Generic)简介 泛型是jdk1.5版本以后推出来的,表示类型参数化,让java能更具有动态性一些,让类型能变成参数传递. 要我自己感觉的话,泛型本身没啥用,跟反射在一起用,就体现出 ...

  5. Dephi泛型generic的应用

    Dephi泛型generic的应用   泛型在C++, C#中已有广泛应用,Delphi自2009版本也引入泛型,典型的应用如TList,TDictionary.如果你熟悉C#,其用法十分类似. 比如 ...

  6. Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)

    一.Comparable接口, Collections类 List的常用算法: sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个 ...

  7. Java自学-集合框架 泛型Generic

    ArrayList上使用泛型 步骤 1 : 泛型 Generic 不指定泛型的容器,可以存放任何类型的元素 指定了泛型的容器,只能存放指定类型的元素以及其子类 package property; pu ...

  8. C#泛型(Generic)

    一.什么是泛型 泛型(Generic)是C#语言2.0.通用语言运行时(CLR)2.0..NET Framework2.0推出来的新特性. 泛型为.NET框架引入类型参数(Type Parameter ...

  9. .NET知识梳理——1.泛型Generic

    1. 泛型Generic 1.1        引入泛型:延迟声明 泛型方法声明时,并未写死类型,在调用的时候再指定类型. 延迟声明:推迟一切可以推迟的. 1.2        如何声明和使用泛型 泛 ...

随机推荐

  1. vue学习遇到的问题

    1.vue脚手架的安装,解决链接:https://www.cnblogs.com/qcq0703/p/14439467.html2.2.2.0+ 的版本里,当在组件上使用 v-for 时,key 现在 ...

  2. Linux下安装mysql-5.7.28详细步骤

    一.下载Mysql 下载地址:https://downloads.mysql.com/archives/community/ 二.环境配置 检测系统是否自带Mysql # rmp -qa|grep m ...

  3. 基于vue3+electron11实现QQ登录切换|自定义导航栏|托盘|打包

    上一篇有给大家分享过使用vue3和electron快速搭建项目.创建多窗口/父子modal窗口的一些方法.今天继续给大家分享一些vue3.x+electron11项目开发中的一些知识点/踩坑记录,希望 ...

  4. 后端程序员之路 24、Redis hiredis

    Redishttps://redis.io/ Redis快速入门 - Redis教程http://www.yiibai.com/redis/redis_quick_guide.html wget ht ...

  5. loadrunner学习笔记一

    这篇笔记主要是针对一个具体的loadrunner脚本里面出现的方法进行解释,具体脚本如下: ` Action() { char *transactionName = "Test"; ...

  6. ElasticSearch 集群的规划部署与运维

    公号:码农充电站pro 主页:https://codeshellme.github.io 1,常见的集群部署方式 ES 有以下不同类型的节点: Master(eligible)节点:只有 Master ...

  7. Excel_不打开文件进行跨工作簿查询

    在使用Excel时,我们经常会遇到这种问题,我的数据源在表1里面,但是我要在表2里面做报表,用lookup和offset等公式都需要打开表1操作,否则就会报错.那么有没有办法在不打开表1的情况下在表2 ...

  8. const修饰符相关

    const修饰符相关 const修饰符表明一个变量是常量,大致分为三类:常量数组(等同于常量指针),常量指针,指向常量的指针. 常量数组中数据都是不可修改的,任何试图修改常量数组中的数据的操作都会报错 ...

  9. dubbo实战之四:管理控制台dubbo-admin

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. 60秒定位问题,十倍程序员的Debug日常

    作者:陶建辉 这是我在 2020 年 5 月写的一篇内部博客,当时是希望研发和技术支持同学能够帮助用户快速定位 Bug,解决问题.2020 年 12 月我又迭代了一版,并还针对此进行了内部的培训.这段 ...