• 泛型的理解和使用--定义后端统一返回结果


    概述

    Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure),将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生态类型),就像完全没有泛型一样。本文综合多篇文章后,总结了Java 泛型的相关知识,希望可以提升你对Java中泛型的认知效率。

    好文章链接

    定义泛型类

    package com.xfw.producer.generics;
    
    import lombok.Data;
    
    /**
     * 泛型类
     *
     * @author xusj
     * 
    CreateDate 2022/8/4 18:03 */
    @Data public class MyResponse<T> { /** * 默认成功 */ private String msg = "success"; /** * 默认200,有错误自己定义 */ private Integer code = 200; /** * 使用泛型封装 */ private T data; /** * 初始化构造方法一 */ public MyResponse(T data) { this.data = data; } public MyResponse(String msg, Integer code, T data) { this.msg = msg; this.code = code; this.data = data; } /** * 定义静态构造方法将data结果封装到结果中一 */ public static <T> MyResponse success(T data) { // 封装返回一个对象给前端 return new MyResponse(data); } /** * 定义静态构造方法将data结果封装到结果中二 */ public static <T> MyResponse success(T data, String msg, int code) { // 封装返回一个对象给前端 return new MyResponse(msg, code, data); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    测试

    • 封装类
    package com.xfw.producer.generics;
    
    import lombok.Data;
    
    /**
     * @author xusj
     * 
    CreateDate 2022/8/4 18:11 */
    @Data public class User { private String name; private int age; }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 测试类
    package com.xfw.producer.generics;
    
    import com.alibaba.fastjson.JSON;
    
    /**
     * @author xusj
     * 
    CreateDate 2022/8/4 18:12 */
    public class Test { public static void main(String[] args) { User user = new User(); user.setName("laozi"); user.setAge(10000); System.out.println(JSON.toJSONString(MyResponse.success(user))); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    总结

    泛型方法

    你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

    下面是定义泛型方法的规则:

    所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的 )。
    每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
    类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
    泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像 int、double、char 等)。

    java 中泛型标记符:

    E - Element (在集合中使用,因为集合中存放的是元素)
    T - Type(Java 类)
    K - Key(键)
    V - Value(值)
    N - Number(数值类型)
    ? - 表示不确定的 java 类型

  • 相关阅读:
    MySQL-锁
    Chromium 开发指南2024 Mac篇-开始编译Chromium(五)
    Android Studio SDK&Gradle&JDK等工具的正确使用
    显示控件——图标类之图标变量
    安装Ubuntu 系统
    jenkins结合126邮箱提醒
    联想Y9000P-2022款踩坑指南 加装固态和内存 win10系统安装
    为什么软件公司很少用Python开发Web项目?
    【C++】关于仿函数
    Java基础语法部分
  • 原文地址:https://blog.csdn.net/weixin_46643875/article/details/126165386