美文网首页
JAVA 泛型的好处

JAVA 泛型的好处

作者: 得鹿梦为鱼 | 来源:发表于2019-01-03 21:56 被阅读0次

场景

以列表接口为例,一般都是返回所需数据的集合以及分页信息。这通常都是一个模板类,所有列表接口都是通用的。

如果是返回给前端,那么需要泛型与否都没必要,前端看到的就是一个Object;

如果是后端使用,那么泛型就非常必要。

定义返回模板

图1 ResponseList 图2 ResponseListImprove

可以看到,这两个模板类,其属性 data 都是一个List,用于封装列表数据。唯一的区别在于一个加了<T>(泛型) ,一个没有。

Service定义

图3 UserService

该Service定义了两个方法,都是查询用户的所有信息。

第一个方法返回对象为:ResponseList

第二个方法返回对象为:ResponseListImprove(支持泛型)

第三方调用

图4 调用示例

通过图3,我们知道UserService里有两个获取用户信息的方法。

现在第三方(其他人)在list方法里进行调用并且要使用返回的数据。

ResponseListImprove模板,返回数据只能通过User对象接收,Man类型会编译不通过。

ResponseList模板,可以将返回数据转为User或Man接收,这明显不是我们预期的结果。并且编译器也会给我们提示:Unchecked assignment: ....

好处

1.保证类型安全

使用泛型后,如果其他地方需要调用获取列表信息的方法,在使用返回数据的时候,无论是添加还是使用数据,都可以减少出错的概率。

2.消除强制类型转换

没有泛型的返回,我们可以认为是一个Object,在使用时需要对其进行强制转换,在转换过程中,非常容易出现ClassCastException。


再改进 20180122


给返回对象添加序列化

图5 对象序列化后

为什么要序列化?以下是百度的...

java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。

IDEA 自动生成serialVersionUID

IDEA不具有自动生成serialVersionUID的能力,所以需要安装插件 GenerateSerialVersionUID。如图:

图6 IDEA->Setting->Plugins

使用方法

对象序列化后,使用Alt + Insert 即可

图7 快速生成 serialVersionUID

给泛型添加约束

图8 T extends BaseResponseDTO

Q:为什么要 T extends BaseResponseDTO?

A:保证传入数据的安全性。(BaseResponseDTO只是用于示例,正式使用看需看场景)

改造User

改造User,否则图3的UserService.findAll 编译不通过

图9 User extends BaseResponseDTO

BaseResponseDTO

图10  BaseResponseDTO

BaseResponseDTO中可以抽象一些具有公共性的属性等,具体还需要看使用场景

相关文章

  • 泛型(一)

    1. Java中的泛型是什么 ? 使用泛型的好处是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化...

  • 赢在面试之Java泛型篇

    1、Java中的泛型是什么 ? 使用泛型的好处是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类...

  • Java泛型(黑马程序员武汉中心)

    Java泛型 一、概述 1、泛型含义 2、泛型好处 3、泛型分类 二、常见的泛型案例 1、泛型方法 A.定义时 B...

  • Java泛型面试题

    1.Java中的泛型是什么 ? 使用泛型的好处是什么?以及各个版本有何区别? 答:泛型是 Java SE 1.5 ...

  • 泛型常见的面试题

    1. Java中的泛型是什么 ? 使用泛型的好处是什么? 这是在各种Java泛型面试中,一开场你就会被问到的问题中...

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

  • 泛型

    泛型 一、java中的泛型 泛型是jdk1.5使用的新特性。 泛型的好处: 将运行时的异常提前至了编译时。 避免了...

  • java泛型及泛型擦除

    泛型的好处: 类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编...

  • java泛型及泛型擦除

    泛型的好处: 类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编...

  • JAVA 泛型的好处

    场景 以列表接口为例,一般都是返回所需数据的集合以及分页信息。这通常都是一个模板类,所有列表接口都是通用的。 如果...

网友评论

      本文标题:JAVA 泛型的好处

      本文链接:https://www.haomeiwen.com/subject/krkqrqtx.html