集合泛型知识

泛型

是一种把类型明确工作推迟到创建对象或者调用方法的时候才明确的特殊类型。

也称参数化类型,把类型当成参数传递。

在jdk1.5中出现。一般来说经常在集合中使用。

  • 格式

    <数据类型>

    此处的数据类型只能是引用类型

  • 好处

    1.把运行期间的问题提前到编译时期。

    2.避免了强制类型转换。

    3.优化了程序,解决了警告。

  • 泛型产生原因

    早期,Java中使用Object来表示所有类型。向上转型没有问题,但是在向下转型的时候隐含了类型转换问题。

    也即是说,这样的程序是不安全的。所以在Java的JDK5以后引入了泛型,提高了程序安全性。

  • 泛型的应用

    • 泛型类

      把泛型定义在类中

      格式:public class 类名<泛型类型1,…>(表明可定义多个泛型类型,每个类型之间用逗号隔开。)

      public  class objectTool<T>{
      private T obj; public T getObj(){
      return obj;
      } public void setObj(){
      this.obj = obj;
      }
      }
    • 泛型方法

      把泛型定义在方法上

      格式:public <泛型类型> 返回类型 方法名(泛型类型);

      public <T> void show(T t){
      System.out.println(t);
      }
    • 泛型接口

      把泛型定义在接口上

      格式:public interface 接口名<泛型类型1,…>

      interface Inter<T>{
      public abstract void show(T t);
      } //实现接口
      //1.知道要用什么类型
      //class InterImpl implements Inter<String>{
      //
      // @Override
      // public void show(String t) {
      // System.out.println(t);
      // }
      //} //2.不知道要用什么类型
      class InterImpl<T> implements Inter<T>{ @Override
      public void show(T t) {
      System.out.println(t);
      }
      }
  • 泛型高级之通配符

    泛型如果明确的写出,则前后必须一致

    class Animal {
    
    }
    
    class Dog extends Animal{
    
    }
    
    class Cat extends Animal{
    
    }

    • 表示任意类型,如果没有明确那么就是Object及Java任意类

      Collection<?> c1 = new ArrayList<Object>();
      Collection<?> c2 = new ArrayList<Animal>();
      Collection<?> c3 = new ArrayList<Dog>();
      Collection<?> c4 = new ArrayList<Cat>();

    • ?extends E

      向下限定,E及其子类

      Collection<? extends Animal> a1 = new ArrayList<Animal>();
      Collection<? extends Animal> a2 = new ArrayList<Dog>();
      Collection<? extends Animal> a3 = new ArrayList<Cat>();

    • ?super E

      向上限定,E及其父类

      Collection<? super Animal> b1 = new ArrayList<Animal>();
      Collection<? super Animal> b2 = new ArrayList<Object>();

Javase之集合泛型的更多相关文章

  1. java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨

    java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...

  2. reflect 反射结合集合泛型的总结

    集合泛型: 可以放任何对象的 ArrayList  ArrayList list = new ArrayList();  没有限定泛型类型. list.add("lilin");l ...

  3. Java反射的理解(六)-- 通过反射了解集合泛型的本质

    Java反射的理解(六)-- 通过反射了解集合泛型的本质 上述写了那么多,我们可能会有个疑问,为什么要用反射,步骤比我们常规的加载类操作复杂多了,别急,这个问题我最后才解答,我们先来了解集合泛型的本质 ...

  4. C# 数组&集合&泛型集合

    一.数组 必须规定类型,必须规定长度:  1.定义 int[ ] i = new int[5]; int[] j = new int[]{1,2,3,4,5}; 2.数组的遍历: Console.Wr ...

  5. javase高级技术 - 泛型

    在写案例之前,先简单回顾下泛型的知识 我们知道,java属于强变量语言,使用变量之前要定义,并且定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值. 所谓“泛型”,就是“宽泛的数据类 ...

  6. java反射--通过反射了解集合泛型的本质

    通过Class,Method来认识泛型的本质 package com.reflect; import java.lang.reflect.Method; import java.util.ArrayL ...

  7. [Java反射基础四]通过反射了解集合泛型的本质

    本文接上文"方法反射的基本操作",利用反射了解下java集合中泛型的本质 1.初始化两个集合,一个使用泛型,一个不使用 ArrayList list1 = new ArrayLis ...

  8. 2017年11月3日 VS三大类&数组&VS的冒泡排序&集合&泛型集合

    三大类 共分为两个大类: 基本数据型&引用类型 基本数据型---值类型---整型---常用的整型: Int , 长整型:  Long, 小整型: byle, 中整型 short --浮点型 - ...

  9. Javase之集合体系(3)之Set及其子类知识

    集合体系之Set及其子类知识 Set(接口) public interface Set<E>extends Collection<E> ​ 特点:无序(存储顺序与取出顺序不一致 ...

随机推荐

  1. 墙上你APP设计与实现

    墙上你APP,听名字你们就应该可以想到是一个类似于表白墙吧,其实在做这个项目的时候我就是看到我们学校有一个专门工程墙,但是你找它发布消息表白或者找寻自己在学校掉了的饭卡或者身份证的时候,需要等它们同意 ...

  2. 首个企业架构TOGAF角色扮演案例培训的诞生

    BangEA企业架构系列在不同机构做了不少TOGAF认证课,自己都觉得有点枯燥了,我在想我们IT帮2020年第一期的认证课是不是该换种授课方式呢?想到就做......TOGAF认证培训,最早主要就是讲 ...

  3. docker redis实现主从复制

    1.使用docker启动三个redis实例,容器名称分别为:myredis-master-6379,myredis-slave-6380,myredis-slave-6381.通过命令可以看到容器给三 ...

  4. 百度地图API----搜索地址,获取该点的位置坐标并转换成WebMercator

    function doFind(){ LoadBaiduMapScript().then(BaiduMap).then(function () { //查询并获取坐标 var myGeo = new ...

  5. mssql sqlserver 将逗号分隔的一列数据转换为多列数据的方法分享

    转自:http://www.maomao365.com/?p=10278  摘要: 下文讲述sqlserver中将使用逗号组合的单列数据,分隔为多列数据的方法 实验环境:sql server 2012 ...

  6. Script - 检查当前的undo配置和建议设置 (Doc ID 1579035.1)

    Script - Check Current Undo Configuration and Advise Recommended Setup (Doc ID 1579035.1) APPLIES TO ...

  7. CodeForces - 1251D (贪心+二分)

    题意 https://vjudge.net/problem/CodeForces-1251D 您是一个大型企业的负责人.在您的企业当中共有n位员工为您工作,而且非常有趣的事是这个n是一个奇数(n不能被 ...

  8. 【python3基础】python3 神坑笔记

    目录 os 篇 os.listdir(path) 运算符篇 is vs. == 实例 1:判断两个整数相等 实例 2:argparse 传参 实例 3:np.where 命令行参数篇 Referenc ...

  9. npm --save-dev 和 --save 的区别

    转载 >>> 1. npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件, 一个是npm install--save    ...

  10. 新手springmvc web简单搭建过程-caidachun

    第一次做整了一天,中间各种报错,大佬肯定要嘲笑我了,但还是很有成就敢,现在只知道怎么装配,还不知道为什么,还需要学习.加油 1.新建动态web项目 2. 添加jar包,可以到网上下载,commons- ...