泛型的本质是类型参数化
java 中泛型标记符:
- E – Element (在集合中使用,因为集合中存放的是元素)
- T – Type(Java 类)
- K – Key(键)
- V – Value(值)
- N – Number(数值类型)
- ? – 表示不确定的 java 类型
泛型类
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。
- 泛型类,如果没有指定具体的数据类型,此时,操作类型是Object
- 泛型的类型参数只能是类类型,不能是基本数据类型
- 泛型类型在逻辑上可以看成是多个不同的类型,但实际上都是相同类型
从泛型类派生子类
- 子类也是泛型类,父类和子类的泛型类型要一致
- 子类不是泛型类,父类要明确泛型的数据类型
class Child<T> extends Father<T>
class Child extends Father<String>
使用泛型类实现API统一返回结果格式
package com.zm.controller;
import java.io.Serializable;
public class ApiResult<T> implements Serializable {
private T data;
private int code;
private String msg;
public ApiResult() {
}
public ApiResult(T data) {
this.data = data;
}
public T getData() {
return data;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
public ApiResult<T> setData(T data) {
this.data = data;
return this;
}
public ApiResult<T> setCode(Integer code) {
this.code = code;
return this;
}
public ApiResult<T> setMsg(String msg) {
this.msg = msg;
return this;
}
/**
* 请求成功回调
*
* @return
*/
public static ApiResult<?> successMsg() {
return new ApiResult<>().setCode(200).setMsg("ok");
}
/**
* 请求成功回调
*
* @param t 对象参数
*/
public static <T> ApiResult<T> successMsg(T t) {
return new ApiResult<>(t).setCode(200).setMsg("ok");
}
/**
* 请求失败回调
*
* @param code 状态码
* @param msg 描述信息
*/
public static ApiResult<?> errorMsg(int code, String msg) {
return new ApiResult<>().setCode(code).setMsg(msg);
}
/**
* 请求失败回调
*
* @param msg 描述信息
*/
public static ApiResult<?> errorMsg(String msg) {
return new ApiResult<>().setCode(500).setMsg(msg);
}
}
泛型接口
- 实现类不是泛型类,接口要明确数据类型
- 实现类也是泛型类,实现类和接口的泛型类型要一致
interface 接口名称 <泛型标识,泛型标识,…> {
泛型标识 方法名();
.....
}
泛型方法
修饰符 <T,E, ...> 返回值类型 方法名(形参列表) { 方法体... }
泛型通配符
泛型通配符上限
类/接口<? extends 实参类型>
要求该泛型的类型,只能是实参类型,或实参类型的子类型
泛型通配符下限
类/接口<? super 实参类型>
要求该泛型的类型,只能是 实参类型 或 实参类型的父类类型
类型擦除
无限制类型擦除
有限制类型擦除
擦除方法中类型定义的参数
桥接方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133898.html