Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • JavaSE

    • Java简介
    • 基础语法
    • 数据类型
    • 变量
    • 运算符
    • 输入输出
    • 流程控制
    • 循环语句
    • idea中的辅助键
    • 数组
    • 方法
    • 面向对象基础
    • 字符串
    • ArrayList集合
    • 继承
    • 修饰符
    • 多态
    • 抽象
    • 接口
    • 类名作为形参和返回值
    • 内部类
    • Api
    • 异常
    • 集合
    • 泛型
      • 泛型格式
      • 泛型可以使用在
      • 使用泛型方法
      • 类型通配符
        • 类型通配符上限
        • 类型通配符下限
    • Set集合和比较器
    • 树
    • 哈希
    • 可变参数
    • 创建不可变的集合
    • Stream流
    • 方法引用
    • File
    • 多线程
    • 多线程高级
    • 网络编程
    • 类加载器
    • 反射
    • XML
    • 枚举
    • 注解
    • 单元测试
    • 日志
    • HTTP协议
    • Servlet
    • 请求对象
    • 响应对象
    • Cookie
    • Session
    • JSP
    • Listener
    • JDBC
  • JavaEE

  • Linux

  • MySQL

  • NoSQL

  • Python

  • Python模块

  • 机器学习

  • 设计模式

  • 传智健康

  • 畅购商城

  • 博客项目

  • JVM

  • JUC

  • Golang

  • Kubernetes

  • 硅谷课堂

  • C

  • 源码

  • 神领物流

  • RocketMQ

  • 短链平台

  • 后端
  • JavaSE
Iekr
2021-07-22
目录

泛型

# 泛型

泛型是 JDK5 中引入的特性,它把运行期间的问题提前到了编译期间,避免了强制类型转换

# 泛型格式

<类型> 按照变量规则书写即可 如: <E> <T>

<类型1,类型2...> 多个泛型格式,多个泛型之间用逗号隔开 如: <E,T,Q>

如果该泛型未接收到指定类型,则默认为 object 类型

# 泛型可以使用在

  1. 类后面 泛型类

    public static class f<e> {
            int a;
        }
    public static void main(String[] args) {
            f<Integer> fa = new f<>();  // 在类后面加上<> 指定泛型  new出来的类只能使用指定类型对象,否则会出现编译时问题(泛型把运行时问题提前到编译时)
    
        }
    
    1
    2
    3
    4
    5
    6
    7
  2. 方法申明上 泛型方法

    方法定义一个泛型 在返回值前面加上泛型

    public <E> e getA(e E) {
                return E;
            }
    
    1
    2
    3
  3. 接口后面 泛型接口

    在接口名后面定义泛型

    public interface in<e>{
            e show(e E);
        }
    
    1
    2
    3

    类实现

    // 实现类不给指定类型 此类也需要成为泛型类
    public class fa1<e> implements in<e>{
        @Override
        public e show(e E) {
            return null;
        }
    }
    
    // 实现类给予指定数据类型
    public class fa2 implements in<Integer>{
        @Override
        public Integer show(Integer E) {
            return null;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

# 使用泛型方法

public static void main(String[] args) {
        ArrayList<String> list =new ArrayList<>();
        list.add("对对对");
        list.add("对对对2");
        list.add("对对对3");
        String[] strings = list.toArray(list.toArray(new String[0]));  // 需要传一个泛型指定的类型对象
        System.out.println(Arrays.toString(strings));
    }
1
2
3
4
5
6
7
8

# 类型通配符

<?> 可以匹配任何类型

ArrayList <?> : 可以匹配任何类型,但是 ArrayList 不能添加元素,获取出来的也是父类类型

public static void method1(ArrayList<?> list){}
1

# 类型通配符上限

<? extends 类型>

ArrayList <? extends Number> : 表示它的类型是 Number 或其他子类

public static void method2(ArrayList<? extends  Number> list){}
1

# 类型通配符下限

<? super 类型>

ArrayList <? super Number> : 表示它的类型是 Nuber 或 Number 父类

public static void method3(ArrayList<? super Number> list){}
1

image-20210722085538408

编辑 (opens new window)
上次更新: 2023/12/06, 01:31:48
集合
Set集合和比较器

← 集合 Set集合和比较器→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式