以程序为例
package com.ats.result;
public class Result<T> {
private int code;
private String msg;
private T data;
/**
* 成功时候的调用 第一个<T>是固定语法 可以理解为在这个方法中使用的泛型用符号T表示,当然你也可以用别的名字。 Result<T>代表类Result的定义中也是用了泛型public class Result<T> {}
* */
public static <T> Result<T> success(T data){
return new Result<T>(data);
}
/**
* 失败时候的调用
* */
public static <T> Result<T> error(CodeMsg codeMsg){
return new Result<T>(codeMsg);
}
private Result(T data) {
this.data = data;
}
private Result(int code, String msg) {
this.code = code;
this.msg = msg;
}
private Result(CodeMsg codeMsg) {
if(codeMsg != null) {
this.code = codeMsg.getCode();
this.msg = codeMsg.getMsg();
}
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
public static <T> Result<T> success(T data){
return new Result<T>(data);
}
第一个<T>是固定语法 可以理解为在这个方法中使用的泛型用符号T表示,当然你也可以用别的名字。 Result<T>代表类Result的定义中也是用了泛型的,public class Result<T> {} ===》称为泛型类
==================================================================
第一个固定写法,那么他的作用是什么呢,声明吗,那么第二个呢
可以这么理解 应该叫类型占位符
第二个问题有点难回答。这么说吧。泛型的引入是为了通过类型约束机制实现类型转换的安全性。
==========================================================
以上理解仅供参考,欢迎各位指正
关注公众号:工控技术之家,可留言提问相关问题,有需要可发送源代码