【JAVA】JAVA泛型的<T>一时在前面一时在很后面怎么理解
一、泛型的定义
泛型是一种在编程语言中使用的概念,目的是让代码能够处理多种数据类型,而不仅仅是一种固定类型。通过使用泛型,可以编写更通用和灵活的代码,提高代码的可重用性和可读性。
在使用泛型时,可以定义一个或多个参数,这些参数可以代表不确定的数据类型。在代码实现中,可以使用这些参数表示各种不同的数据类型,从而实现相同的功能逻辑。
使用泛型可以避免在代码中重复编写相似的代码,同时还可以减少类型转换的错误和运行时错误。泛型的主要优势是在编译时进行类型检查,可以提前发现错误,而不是在运行时才发现。
二、JAVA中是使用泛型的例子无处不在,如
声明一个泛型类
public class ResponseData<T> implements Serializable{}
只需要在类型后面加上一个<T> 就可以,在使用泛型就可以
private T data;
编译器不会报错
上面是泛型类和泛型变量的声明,下面看看泛型方法的声明
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
看着两个方法直接就使用T 就行
下面再可看这两个
public static <T> ResponseData<T> success() {
return success(ResponseCode.SUCCESS);
}
public static <T> ResponseData<T> success(ResponseCode code) {
return success(code, null);
}
怎么有的<T>在ResponseData<T>之前,为什么不是直接 ResponseData<T>就可以。
其实这里ResponseData<T> 已经算是一个具体类型,所以需要将<T> 放在它的前面就行修饰。
如果放在后面是不是也行?经测试编译器报错,所以这里就有个矛盾ResponseData<T>是具体类型 再后面加 <T> 应该可以。
下面看看这几种泛型方法声明方式
public interface EncryptDecryptInterface {
public <T> T encryptSelf();
public <T> T decryptSelf();
public <T> List<T> encryptSelfList(List<T> c);
public <T> List<T> decryptSelfList(List<T> c);
public <T> T decryptSelfList(T c);
}
我们发现<T> 都放在类型之前,但是这里的 <T> T 其中的 T 不像List<T> 中的List可以导入, T变成了自定义类型,它可以用其他大写字母代替。所以这种规则让人看的云里雾里,<T> List<T> 前后两个<T> .