联系我们

邮箱:admin@baidu.com
地址:广东省广州市天河区88号
传真:+86-123-4567
手机:13988999988
电话:400-123-4567

澳门葡京赌场官网网址

当前位置:葡京赌场官网_葡京赌场网址 > 产品展示 > 澳门葡京赌场官网网址 >

一篇文章告诉你如何使用Java泛型?

时间:2019-04-15 14:10 来源:网络整理 作者:http://www.m-dm.cn

  Spring 框架中的 JpaRepository、CrudRepository 都已使用泛型构建,创建、更新、查找、查找所有、删除等等,是适用于所有实体的泛型方法。

  

一篇文章告诉你如何使用Java泛型?

  泛型应用在什么地方?

  思考以下代码,将一个字符串放进特定字符串框架(SpecifizedStringBox)对象中,然后以此获得一个字符串。

  还有一些泛型方法,可归为四大类:

  答案是肯定的。Java 中的 ArrayList 就是做这件事的一种类。通过 List = new ArrayList<>(); 就能创建一个字符串数组,当整数作为类型参数时,它就是整数数组,其他的也类似。

  用例类型 4 :泛型方法用于类的分层并行结构中

  4. 在列表中查找特定值:binarySearch,indexOfSubList,lastIndexOfSubList。

  泛型算法不一定总是和特定的数据结构或算法绑定在一起。有时,基于实际应用的满意度,它还可以应用在大多数抽象数据结构组中。

  杯子是很好的例子,可以把它比做实时对象类型的依托物(Holder),它可以装茶、咖啡或者任何饮料。公交上可以坐男人和女人,如果让公交具备类型安全性且只允许女人上车,那么我们可以称之为女士公交。这种比喻可能有点欠妥,但它提出了商业用例,尤其是封装器或者依托物也具有应用泛型的可能。尝试询问业务的封装或依托是否有使用数据结构的倾向,如果有,那么使用泛型会更好。

  虽然我们用 ArrayList 作为例子,但由于其复杂性,我们不会讨论他们具体是怎么实现的。我们会借鉴一个盒子并思考怎么把这个盒子做出来,而这个盒子就是某个特定类型的通用框架(a Generic box from a Specific Typed box)。

  

一篇文章告诉你如何使用Java泛型?

  类型安全性(Type safety):一旦使用类型参数后,在该方法或框架中就不存在其他的数据类型,同时也避免了类型转化的需求;

  

一篇文章告诉你如何使用Java泛型?

  emptyList, emptyMap, emptySet

  如果你自己写数据结构,那么一定试试利用泛型。除了Java 的集合 API,你也会在 Guava、Apache Common Collection、FastUtils、JCtools 和 Eclipse Collection 里发现其他对泛型更好的应用。

  

一篇文章告诉你如何使用Java泛型?

  有时候,通用框架以单个元素而不是集合的形式出现。诸如 Map 映射中的输入 <K, V>,节点 <K , V>,数据对 <K, V>,以及其他代数数据类型,像是可选项 <T> , 选择 <U, V> 等等,它们只作为特定类型数据的依托(Holder)或封装器(wrapper)而已。

  

一篇文章告诉你如何使用Java泛型?

  通用编程及参数的多态性。

  synchronizedCollection, synchronizedSet, synchronizedMap

  

一篇文章告诉你如何使用Java泛型?

  查看以下方法,了解什么方法能适用:

  

  现在,如果从该对象中抽取其数据类型“Type”,就得到一个由以下代码代表的通用框架(GenericBox,也就是泛型),而该框架可以使用 String、Integer、Boolean 等任意数据类型。

  

一篇文章告诉你如何使用Java泛型?

  Collection Factories Methods, Empty/Singleton

  看起来似乎通过重构已有特定类型的方法或框架,就能应用泛型。在处理数据结构和原始数据类型时,似乎还挺容易,但是我们总会在各不相同的类中建立大量的数据类型。泛型编程模式(Generic Programming Paradigm)和 面向对象编程(OOP)混合在一起时,就很难决定是否要使用泛型。理解在哪里应用泛型,问题就解决了一半。

  Java 在 JDK 5.0 中引用泛型的目的在于:

  

一篇文章告诉你如何使用Java泛型?

  用例 1 : 泛型的第一级别用法是算法和数据类型

  

一篇文章告诉你如何使用Java泛型?

  

一篇文章告诉你如何使用Java泛型?

  【IT168 评论】只要了解了泛型的一般使用情况就能够解决多半的问题。所以,首先我们来了解一下什么是泛型、为什么要使用它以及应用方法。

  1. 更改列表中的元素顺序:reverse,rotate,shuffle,sort,swap;

  checkedCollection, checkedList, checkedSet

  数据结构中的数据有类型,用泛型将这种类型抽取出来,可以作为类型参数。而算法的输入参数也具有数据类型,同样,通过泛型可以将该类型从输入参数中抽象出来。因此,泛型适用于使用特定数据结构的任意一种算法。

  需要给每个实体创建一个并行数据访问对象(DAO)类时,会出现类的分层并行结构(parallel hierarchy of classes)。 不过 DAO 模式并不是其出现的唯一情况。

  所以,使用泛型,就是要从某个方法(method)或者类(class)中,抽象出一种适用于任意类型的通用方法/类。

  long,float 或 double 类型并不能当作输入传给这个方法。

  unmodifiableCollection, unmodifiableSet, unmodifiableList

  C++ 的模版编程能帮我们实现通用编程及参数的多态性,根据数据的类型(预定义或用户定义的)转化同样的算法模型,达到复用同一个代码或程序的目的。在 Java 中也可以使用类似的方法。

  简单点的答案就是,通过泛型抽象数据类型后,你的代码可以重复使用并且易于维护。

  如果为了提供更多可能的方法实例,我们可以通过将方法与对象解除联系的方式,来应用策略模式(Strategy Pattern)处理业务问题,这时类的分层并行结构就会出现。

  算法和数据结构并行,数据类型的微小变化可能会改变一个算法的复杂性。