JAVA 泛型的定义以及使用

泛型类

java 复制代码
/**
 * <T> 为该类定义泛型,可以是一个或多个<T,...>
 *     定义的泛型可以在类中作为:
 *     类变量类型: T data
 *     类方法的入参以及返回类型  public void setData(T data),public T getData();次数以set,get方法举例,类的其他方法也是可以的
 * @param <T>
 * E:表示 Element,即元素,运用在集合中
 * K:表示 Key,即键
 * V:表示 Value,即值
 * N:表示 Number,即数值类型
 * T:表示 Type,即 Java 类型
 * ? :表示不确定的 Java 类型
 */
public class Generic <T>{

    private String code;

    private String message;

    private T data;


    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * 可以理解成泛型类的方法,但不能称之为泛型方法
     * 因为这里类定义了泛型<T> 所以该类中的方法可以使用泛型T
     * @return
     */
    public T getData() {
        return data;
    }

    /**
     * 可以理解成泛型类的方法,但不能称之为泛型方法
     * @return
     */
    public void setData(T data) {
        this.data = data;
    }


    /**
     * 此方法可以定义泛型类中,也可以定义在普通类中,即泛型方法不一定定义在泛型类中
     * <U,R> 即为为该方法定义了两个泛型U,R 定义的泛型可以作为方法的入参类型和返回类型,以及方法中的变量类型
     * 入参和返回类型可以是泛型或者具体的数据类型;例如testGeneric1,testGeneric2
     * @param u
     * @param r
     * @param <U>
     * @param <R>
     */
    public <U,R> void testGeneric(U u,R r){
        // do something
    }

    /**
     * 返回类型为具体类型
     * @param u
     * @param r
     * @param <U>
     * @param <R>
     */
    public <U,R extends Number> String testGeneric1(U u,R r){
        // do something
        return r.toString();
    }

    /**
     * 返回类型为泛型
     * @param u
     * @param r
     * @param <U>
     * @param <R>
     */
    public <U,R extends Number> R testGeneric2(U u,R r){
        // do something
        return r;
    }
}

泛型接口

java 复制代码
import java.util.List;

/**
 * <I,R> 定义泛型I,R
 * 在该接口中可以使用泛型I,R作为接口方法的入参类型和返回值类型
 * @param <I>
 * @param <R>
 */
public interface GenericService <I,R>{

    List<R> test1(I i);
}

泛型方法

java 复制代码
/**
     * 此方法可以定义泛型类中,也可以定义在普通类中,即泛型方法不一定定义在泛型类中
     * <U,R> 即为为该方法定义了两个泛型U,R 定义的泛型可以作为方法的入参类型和返回类型,以及方法中的变量类型
     * 入参和返回类型可以是泛型或者具体的数据类型;例如testGeneric1,testGeneric2
     * @param u
     * @param r
     * @param <U>
     * @param <R>
     */
    public <U,R> void testGeneric(U u,R r){
        // do something
    }
相关推荐
掘金-我是哪吒3 分钟前
分布式微服务系统架构第157集:JavaPlus技术文档平台日更-Java多线程编程技巧
java·分布式·微服务·云原生·架构
飞翔的佩奇12 分钟前
Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
java·数据库·mysql·vue·毕业设计·ssm框架·小区物业管理系统
RainbowSea30 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
掘金-我是哪吒31 分钟前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
java·分布式·微服务·云原生·架构
RainbowSea34 分钟前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis
前端 贾公子37 分钟前
monorepo + Turborepo --- 开发应用程序
java·前端·javascript
不学会Ⅳ1 小时前
Mac M芯片搭建jdk源码环境(jdk24)
java·开发语言·macos
虫小宝1 小时前
高佣金返利平台监控体系建设:APM、链路追踪与佣金异常预警系统技术实现
java
sniper_fandc2 小时前
SpringBoot系列—入门
java·spring boot·后端
代码的余温3 小时前
Maven引入第三方JAR包实战指南
java·maven·jar