行业新闻
java的泛型方法怎么写(讲述java泛型的好处)
2022-02-24 13:49  浏览:0

一般的类和方法,只能使用具体的类型,要么是基础数据类型,要么是自定义类。

如果要编写可以应用与多种类型的代码,这种刻板的限制对代码的束缚就会很大。

泛型的字面概念:

适合用于许多类型。

在面向对象中,多态算是一种泛化机制。

泛型的使用例子:

在如图的例子中T就是类型参数

当你创建Holder对象时,必须指明想持有什么类型的对象,将其置于尖括号内,就像main()中那样。然后,你就只能在Holder中存入该类型(或其子类,以为多态与泛型不冲突)的对象了。并且,在你从Holder中取出它持有的对象时,自动地就是正确的类型。

java泛型核心概念:

告诉编译器想要什么类型,让后编译器帮你处理一切细节。

一般而言,你可以认为泛型与其他的类型差不多,只不过他们碰巧有参数罢了。

Java泛型中的标记符含义:

E – Element (在集合中使用,因为集合中存放的是元素)

T – Type(Java 类)

K – Key(键)

V – Value(值)

N – Number(数值类型)

? – 表示不确定的java类型

S、U、V – 2nd、3rd、4th types

使用泛型遇到的问题

1.任何基础数据类型都不能作为类型参数:

学习泛型你会发现,Java泛型的限制之一,不能间基础数据类型用作类型参数。

2.事项参数化接口:

一个类不能同时实现同一个泛型接口的两种变体,由于擦除的原因,这两个变体会成为相同的接口。

3.转型和警告

使用带有泛型类型参数的转型或instanceof不会有任何效果。

4.重载

有与擦除的原因,重载方法将产生相同的类型签名。

5.基类劫持了接口

Java中使用泛型最吸引人的地方就是在容器类中,包括List,各种Set,各种Map。

泛型优点:

当一个对象被放置在容器中时,这个对象会北向上转型为Object,因此你会丢失类型信息。java如果类型放置错误导致取出的时候会进行强制类型转换,会得到一个RuntimeException,虽然你能发现问题,当时是在运行时发现的而非在编译发现它的。引入泛型并不会让你误用放入容器中的对象。