Java 泛型---泛型的介绍和使用以及实例

  • 泛型的介绍

一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。
在面向对象编程语言中,多态算是一种泛型机制。例如使用一个基类作为方法的参数类型,那么该方法的参数类型能够接受该基类导出的子类和自己作为参数。但是final类除外。如果方法的参数是一个接口,而不是类,所以任何实现了该接口的类都能作为该方法的参数类型。即使使用了接口,约束性还是太强,因为一旦使用接口,就要求你的类必须使用特定的接口。所以,要达到代码能够应用于“某种不具体的类型”,而不是一个具体类或接口,于是,这才要使用到了泛型这一东东。
泛型是一个什么东东呢?简单来说,泛型可以使代码能够应用于多种类型,使你的代码的跟具有灵活性和可重用性。

  • 简单泛型

有很多原因促成了泛型的出现,而最引人注目的一个原因,就是为了创造容器类。来看看下面例子
首先,我创建了两个简单的类,Bird和Dog
在这里插入图片描述
在这里插入图片描述
这是持有单个对象的类。这个类明确指定了其持有的对象的类型,不过,这个类的可重用行就不怎么强了,它无法持有其他类型的任何对象,除开你为每一个类都编写一个新的类或者写相同冗余的代码,当然了,这种方法我想大多数人并不会这样做!

在这里插入图片描述
在JavaSE5之前,我们可以让这个类直接持有Object类型的对象(Object是所有类的基类),所以在这个例子中存储了三种不同的对象。通常而言,我们会使用容器来存储一种类型的对象。泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编辑器来保证类型正确性。
在这里插入图片描述因此,与使用Object,还不如先暂时不指定类型,等用到的时候在决定具体的使用的类型,要达到这个目的,需要使用类型参数,用尖括号括住,放在类名后面。等要使用什么类型的时候在用实际的类型替换此类型参数。下面的例子使用了泛型,与上面比较是不是看起来都易懂点。

在这里插入图片描述

  • 泛型接口

泛型也可以应用于接口,个人觉得在使用上泛型类和泛型接口的使用没有什么区别,来看看下面例子

定义一个泛型的接口
在这里插入图片描述
Fruit基类,用来作为ProduceFruit的参数类型
在这里插入图片描述
Banana子类
在这里插入图片描述
Apple子类
在这里插入图片描述
编写一个类实现ProduceFruit接口,它能够随机生成不同类型的Fruit对象
在这里插入图片描述

  • 泛型方法

泛型方法使得该方法能够独立于类而产生变化,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法。另外,对于一个static的方法而言,无法访问泛型类的类型参数,所以如果static方法需要使用泛型能力,就必须使其成为泛型方法。
要定义泛型方法只需将泛型参数列表置于返回值之前

在这里插入图片描述

发布了2 篇原创文章 · 获赞 2 · 访问量 95

猜你喜欢

转载自blog.csdn.net/qq_40797930/article/details/104555437