泛型的好处:
1. 类型安全:泛型可以在编译时发现类型不匹配的错误,避免在运行时出现类型转换异常。这可以提高代码的可靠性和稳定性。
2. 代码重用:使用泛型可以编写更通用的代码,可以处理各种类型的数据而不必每次都进行类型转换。通过编写泛型方法或泛型类,可以实现更灵活、更通用的编程。
3. 代码可读性和维护性:使用泛型可以使代码更易读、易懂。在使用泛型的代码中,可以清晰地看到数据的类型,这有助于其他开发人员理解代码并进行维护。
4. 性能提升:泛型能够在编译时进行类型检查和擦除,避免了运行时的类型转换,从而提高程序的性能。
5. 强制规范化:泛型能够限制集合中放入的数据类型,可以在编译时强制保证数据类型的一致性,减少程序运行时的错误。
下面举个例子说明一下为什么要使用泛型。
两个实体类(就是后端最常用的接口统一返回数据结构类)(但是一个使用了泛型T,一个使用的Object父类)
@Data
public static class Response{
private int code;
private Object data;
public Response(int code, Object data) {
this.code = code;
this.data = data;
}
public static Response data(Object data){
return new Response(200,data);
}
}
@Data
public static class Result<T> {
private int code;
private T data;
private Result(int code, T data) {
this.data = data;
this.code = code;
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", data=" + data +
'}';
}
public static <T> Result<T> data(T data){
return new Result<>(200, data);
}
}
主函数
public static void main(String[] args) {
String data = "success";
Response success = Response.data(data);
Integer i = (Integer) success.getData();
Result<String> success1 = Result.data(data);
Integer j = (Integer) success1; // 这段是报错的
}
可以看到这里是报错的。
在我们开发阶段如果使用Object父类来实现可传多类型参数,但是在我们使用这个参数的时候都还要对参数进行类型转换。但是一旦我们类型转换出错了,那么这个错误是只会在运行期出现的,那直接就会导致程序崩溃, 这是非常危险的。
而使用泛型就直接在我们开发编译期就自动转换成了我们对应的类型。运行期就很安全了。
所以还是要多使用泛型。