定义
当我们使用了泛型之后,就好比是给我们要操作的数据贴上了一个标签,你贴上的是什么标签,就存什么样的数据,否则编译器会报错。一个容器泛型是什么,就要存入什么类型的数据,否则会报错。
泛型的数据类型只能填写引用数据类型,基本数据类型不可以。如果不手动添加泛型,则默认泛型为 Object 。
泛型类和泛型方法
泛型类
泛型类的使用场景:当一个类中,某个变量的数据不确定时,就可以定义带有泛型的类。
T表示type,V表示value,K表示key,E表示element
泛型方法
泛型方法:通常情况下,当一个方法的形参不确定的情况下,我们会使用到泛型方法。
例子
根据模板写出一个泛型类,含有泛型方法
package com.itheima.reggie.common;import lombok.Data;
import java.util.HashMap;
import java.util.Map;@Data
public class R<T> {private Integer code; //编码:1成功,0和其它数字为失败private String msg; //错误信息private T data; //数据private Map map = new HashMap(); //动态数据public static <T> R<T> success(T object) {R<T> r = new R<T>();r.data = object;r.code = 1;return r;}public static <T> R<T> error(String msg) {R r = new R();r.msg = msg;r.code = 0;return r;}public R<T> add(String key, Object value) {this.map.put(key, value);return this;}}
public class R<T>:这里定义了一个泛型类R,其中T是一个类型参数,表示R类可以持有任何类型的对象。这个类型参数T在类的方法、属性中可以被使用。
public static <T> R<T> success(T object)方法:
这里的<T>表示方法也是泛型的,并且与类的泛型参数T相关联。
这个方法接受一个类型为T的参数object,用于创建一个表示成功状态的R<T>对象,并将传入的对象作为数据部分进行存储。
public static <T> R<T> error(String msg)方法:
同样是泛型方法,返回一个表示错误状态的R<T>对象,错误信息通过msg参数传入。
泛型接口
泛型接口与泛型方法相似,当我们的接口中,参数类型不确定的时候,就可以使用泛型。