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

相关推荐
怒放吧德德2 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆4 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌7 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊8 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang8 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang9 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解9 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing13 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean14 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9715 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java