• Java泛型


    前言:

    泛型常用的几部分内容:
    一,泛型应用在方法,类,接口。分别叫做泛型类,泛型方法,泛型接口。
    泛型类,在类上声明 ,表示使用泛型。
    泛型方法: 在访问符后面添加 ,表示这个方法使用泛型类型。
    泛型接口 : 也是添加 , 表示用的是泛型,和泛型类相似。
    二,泛型类型通配符 “?”
    (1)实参是通配符 ? : List< ? > list = new ArrayList(); 这个问号就是通配符。对于使用通配符声明的对象,它只能读取,不能往里面添加内容。
    (2)泛型上限 : : 上限是E,及其子类。可允许加入到集合中。
    (3)泛型下限 : 下限是E, 及其父类。可允许加入到集合中。
    三,可变参数
    如果还有别的参数, 可变参数的位置应该放在参数列表的最后。
    因为可变参数的本质还是一个数组,将后面的数据当作一个数组进行封装接收。
    JDK应用案例 : Arrays.asList 这个生成的list 不能增加,或者删除数据,会产生异常错误。

    一,泛型类,泛型接口,泛型方法。

    1,泛型类: 如下就是一个泛型类。 泛型的标识符必须是< >,中间的字母可任意。

    //解释: <T> 表示该类使用泛型。
    public class Container <T>{
    
        //参数类型使用泛型, 返回值是泛型指定的类型。
        public T getValue(T t){
            return t;
        }`在这里插入代码片`
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2,泛型接口:泛型的标识符必须是< >,中间的字母可任意。

    public interface GenericInterface<T> {
    
        //这里这个参数类型T, 是和接口的T对应的。属于泛型接口
        //检验方法: 可以摁住ctrl键, 鼠标点击参数类型T, 高亮的是接口的T高亮。
        public void getValue(T t);
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3,泛型方法: 注意 < > 的位置,是在方法的public 后面加上。
    泛型方法和泛型类使用区别在哪?
    泛型方法更加灵活,每次调用泛型方法都可以传入不同的类型。

    public class GenericityMethod {
    
        //在访问符后面添加 <T> ,表示这个方法使用泛型类型。
        //可根据传入的参数类型的不同设定。
        public <T> void show(T t){
            System.out.println(t);
        }
    
        public <T> T getValue(T t){
            return t;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二,泛型通配符。

    使用通配符 ?声明的实参的泛型集合,无法往里面添加内容,也不能删除内容。那有何用呢?相当于设置一个固定的集合,例如:

    public class Test {
        public static void main(String[] args) {
            List<?> list = Arrays.asList("zhangsan","lisi",1);
            System.out.println(list);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    三,可变参数

    实际上可变参数 … ,就是一个数组。可以把下面的例子中的形参b,进行输出,得到的是一个内存地址。

    public class TestParameter {
        public static void main(String[] args) {
            int res = sum(2,1,1,1,1,1);
            System.out.println(res);
        }
    
        public static int sum(int a, int... b){
            int sum = 0;
            for(int i = 0; i < b.length; ++i){
                sum += b[i];
            }
            return sum;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

  • 相关阅读:
    重点问题!CPU利用率过高排查思路|原创
    arcgis中坡向计算工作原理说明
    Linux启动过程详解
    centos7.8手动部署php环境 04 phpMyAdmin安装
    初识——HTTP3
    Unity中Shader的光照衰减
    JMeter 进行函数助手MD5加密
    vue原理相关
    【云原生】一文带你吃透FlexManager数据传入华为云IOT
    open62541交叉编译
  • 原文地址:https://blog.csdn.net/qq_45860901/article/details/126570163