java中泛型

文章目录

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

注意:类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)

泛型可用使用在方法、接口、类分别称作为:泛型类、泛型方法、泛型接口。

泛型类

格式:修饰符class类名<类型>{}

范例:public class Xd<T>{}

此处T可以随便写为任意标识,T、E、K、V等形式的参数常用于表示泛型

java 复制代码
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){...}

java 复制代码
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>{...}

java 复制代码
package com.xd;

public interface XdInterface<T> {

    T view(T t);

}
java 复制代码
package com.xd;

public class XdImpl<T> implements XdInterface<T> {
    @Override
    public T view(T t) {
        return t;
    }
}
java 复制代码
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工具

相关推荐
wcy_10115 分钟前
七大软件设计原则
java·设计规范
invicinble6 分钟前
jar包在执行的时候需要关注的细节(提供一个解构jvm问题的视角)
java·jvm·jar
麦芽糖02199 分钟前
SSE介绍及使用(Server-Send Events)
java
alan072113 分钟前
【Java + Elasticsearch全量 & 增量同步实战】
java·elasticsearch·jenkins
hashiqimiya26 分钟前
后端springboot的接收前端发来的数据反序列化原理
java
cat三三1 小时前
java之异常
java·开发语言
浙江第二深情1 小时前
前端性能优化终极指南
java·maven
养乐多07221 小时前
【Java】IO流
java
俊男无期1 小时前
超效率工作法
java·前端·数据库
中国胖子风清扬1 小时前
SpringAI和 Langchain4j等 AI 框架之间的差异和开发经验
java·数据库·人工智能·spring boot·spring cloud·ai·langchain