当前位置: 首页 > article >正文

java中泛型

文章目录

    • 泛型类
    • 泛型方法
    • 泛型接口
    • 类型通配符
    • 可变参数
    • xjad工具

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

注意:类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)
泛型可用使用在方法、接口、类分别称作为:泛型类、泛型方法、泛型接口。

泛型类

格式:修饰符class类名<类型>{}
范例:public class Xd<T>{}
此处T可以随便写为任意标识,T、E、K、V等形式的参数常用于表示泛型


package com.xd;

public class Xd<T> {

    private T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }


    public T view(T t){
        return t;
    }



}


泛型方法

格式:修饰符<类型>返回值类型 方法名(类型 变量名){…}
范例:public<T> void view(T t){…}

package com.xd;

public class Xd {

    /**
     * public 修饰符
     * <T> 该方法使用泛型T
     * void 返回值
     * 方法的名称
     * 参数列表(T t)
     *
     */
    public <T>  T view(T t) {
        return t;
    }

}

泛型接口

格式:修饰符 interface 接口名<类型>{…}
范例:public interface Xd <T>{…}

package com.xd;

public interface XdInterface<T> {

    T view(T t);

}

package com.xd;

public class XdImpl<T> implements XdInterface<T> {
    @Override
    public T view(T t) {
        return t;
    }
}

package com.xd;

public class Test01 {
    public static void main(String[] args) {
        XdImpl<String> stringXd = new XdImpl<>();
        String view = stringXd.view("1");
        System.out.println(view);
    }
}

类型通配符

1.类型通配符<?> 一般用于接受使用,不能够做添加
2.List<?>:表示元素类型未知的list,它的元素可以匹配任何类型
3.带通配符的List仅表示它是各种泛型List的父类,并不能把元素添加到其中
4.类型通配符上限:<? extends类型>List<?extends Xd>:它表示的类型是Xd或者子类
5.类型通配符下限:<? super 类型>List<?super Xd>:它表示的类型是Xd或者其父类型

可变参数

可变参数 又称 参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了。
格式:修饰符 返回值类型 方法名(数据类型… 量名){}
范例:public static int sum(int… a){}
可变参数 注意事项:
这里的可变参数变量其实是一个数组
如果一个方法有多个参数,包含可变参数,可变参数要放在最后

xjad工具


http://www.kler.cn/a/580269.html

相关文章:

  • Mysql主从复制和Mysql高可用以及负载均衡配置
  • 解锁下一代开发范式:IntelliJ Idea AI插件全景实战与未来展望
  • Python数据可视化自动化工具:让数据跃然纸上
  • King3399(ubuntu文件系统)Qt(C++)串口工具开发
  • 掌握Excel快捷键与函数公式,开启高效办公之旅
  • android如何实现OOM治理
  • MAC电脑配置VSCode写JAVA
  • 系统架构设计师—系统架构设计篇—软件可靠性
  • Docker 配置镜像源
  • 【JavaScript】09-构造函数+数据常用函数
  • matlab慕课学习3.1
  • 大模型工具Ollama存在安全风险
  • 【无脑 海螺AI api 合成音频 实例 】
  • HTML星球大冒险之路线图
  • 图形编辑器基于Paper.js教程24:图像转gcode的重构,元素翻转,旋转
  • AI革命编程学习:Python语法速通与高阶突破全实战(第二部分:AI辅助调试与高阶编程)
  • PaddleDetection目标检测自定义训练
  • 主流大语言模型中Token的生成过程本质是串行的
  • sparkTTS window 安装
  • 什么是Flask