@Data
public class Result<T> implements Serializable {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
public static <T> Result<T> success() {
Result<T> result = new Result<T>();
result.code = 1;
return result;
}
public static <T> Result<T> success(T object) {
Result<T> result = new Result<T>();
result.data = object;
result.code = 1;
return result;
}
public static <T> Result<T> error(String msg) {
Result result = new Result();
result.msg = msg;
result.code = 0;
return result;
}
}
在 Java 中,泛型的使用有一个特定的语法,其中 <T>
和 T
的位置和含义略有不同。让我们逐一解释。
1. 泛型声明 <T>
-
定义泛型:在类或方法的定义中,
<T>
表示这是一个泛型类型的声明。这个T
可以是任何类型的占位符,通常用来表示不特定的类型。它使得类或方法能够处理不同类型的数据。例如,在
Result<T>
类的声明中,<T>
表示这个类是一个泛型类,可以使用任意类型来替代T
。
public class Result<T> implements Serializable { // ... }
2. 使用泛型 T
- 实际使用:在类的内部,使用
T
来表示你在创建Result
实例时传入的具体类型。这意味着data
字段可以持有任何类型的数据,具体取决于实例化时使用的类型。
private T data; // data 可以是任何类型,具体类型在实例化时确定
3. 示例
考虑以下代码示例:
Result<String> stringResult = Result.success("Hello"); // T 被替换为 String Result<Integer> intResult = Result.success(123); // T 被替换为 Integer
在这两个实例中:
- 在
Result<String>
中,T
变成String
,因此data
字段将持有一个字符串。 - 在
Result<Integer>
中,T
变成Integer
,因此data
字段将持有一个整数。
总结
<T>
是泛型的声明:用于定义一个类、接口或方法是泛型的,允许它接受不同的类型参数。T
是泛型的使用:在类或方法内部引用这个泛型类型,以便处理具体的类型。