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

导读:本篇文章讲解 泛型的理解和使用–定义后端统一返回结果,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概述

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

好文章链接

定义泛型类

package com.xfw.producer.generics;

import lombok.Data;

/**
 * 泛型类
 *
 * @author xusj
 * <br>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);
    }


}

测试

  • 封装类
package com.xfw.producer.generics;

import lombok.Data;

/**
 * @author xusj
 * <br>CreateDate 2022/8/4 18:11
 */
@Data
public class User {
    private String name;
    private int age;
}

  • 测试类
package com.xfw.producer.generics;

import com.alibaba.fastjson.JSON;

/**
 * @author xusj
 * <br>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)));
    }
}

总结

泛型方法

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

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

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

java 中泛型标记符:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96208.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!