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工具

相关推荐
week_泽32 分钟前
第5课:短期记忆与长期记忆原理 - 学习笔记_5
java·笔记·学习·ai agent
像风一样自由39 分钟前
android native 中的函数动态注册方式总结
android·java·服务器·安卓逆向分析·native函数动态注册·.so文件分析
兮动人1 小时前
Maven指定加载的类
java·maven·maven指定加载的类
wangkay882 小时前
【Java 转运营】Day04:抖音新号起号前准备全指南
java·开发语言·新媒体运营
亲爱的非洲野猪2 小时前
Java线程池深度解析:从原理到最佳实践
java·网络·python
亲爱的非洲野猪2 小时前
深入解析享元模式:用Java实现高性能对象复用
java·开发语言·享元模式
qq_401700412 小时前
Qt 事件处理机制
java·数据库·qt
rannn_1113 小时前
【Java项目】中北大学Java+数据库课设|校园食堂智能推荐与反馈系统
java·数据库·后端·课程设计·中北大学
NE_STOP3 小时前
SpringBoot-shiro-jwt-dubbo-redis分布式统一权限系统(完结)
java
zfj3213 小时前
java函数式接口 @FunctionalInterface用法
java·函数·function