前言
我一直认为泛型是编程语言设计中一个非常基本和重要的概念。Java中的泛型是什么?他们为什么在那里?他们是如何发展的?在学习基础知识时,对仿制药的透彻理解是非常重要的。因此,我阅读了《Java编程思想》的一般章节。不幸的是,我没有太多的经验,我已经看了好几次了。我们将来只能有学习的机会。但我也理解很多。以下是我对仿制药的理解和理解。如果有什么错误,我希望指出。
概念
来源:Java在设计开始之前不是通用的,直到它在JDK 1.5中被引入。Java泛型是通过擦除实现的。你知道什么是擦除吗?往下看。
概念:常规类和方法只能使用特定类型;基本类型或自定义类。如果要编写可应用于多种类型代码的代码,这种严格的限制将对代码施加很大的约束。泛型实现了参数化类型的概念,使代码能够应用于多个类型。当泛型在编程语言中出现时,它们的最初目的是希望类和方法具有广泛的表达能力。
简单的泛型
出现泛型有很多原因,其中最重要的一个原因是创建容器类。我们暂时不指定类型,但决定以后使用什么类型。为了实现这一目标,需要在类名后面使用类型参数,用尖括号括起来。然后,当使用此类时,将用实际类型替换此类型的参数。在下面的示例中,t是类型参数。代码如下:
然而,在许多源代码中,一些泛型类具有多个泛型参数,例如Java。UTIL功能。双功能,有三种类型的参数t,u,r。
泛型方法
泛型方法使方法独立于类。在编写通用代码时,基本的指导原则是尽可能使用通用方法。这意味着,如果可以对整个类使用泛型方法而不是泛型方法,那么可以使用泛型方法,因为它们可以使事情更清楚。此外,对于静态方法,不能访问泛型类的类型参数,因此如果静态方法需要使用泛化功能,则必须将它们变为泛型方法。
泛型的擦除
当我读了Java编程思想的一般章节中的“被删除的奥秘”部分时,我特别头晕,然后当我向下看时,我变得越来越困惑。尤其是当你看边界和通配符的时候,它有点令人困惑。首先看看什么是擦除。在泛型代码中,有关泛型参数类型的信息不可用。Java泛型是通过擦除实现的,这意味着当使用泛型时,任何特定的类型都会被擦除,而您所知道的唯一一件事就是使用对象。由于Java最初没有引入泛型,所以它被设计成与旧版本的JDK兼容。ErAcess是Java通用实现之间的折衷。因此,当您运行时,list<string>与list<integer>相同。请注意,它正在运行,但在编译时,list<string>表示此字符串类型的列表容器,list<integer>表示当前整数类型的列表容器。例如,来自Java编程思想的例子。
泛型的边界
Java中的泛型,当编译时,T表示一种类型,如果没有指定边界,它就等于对象。我们可以使用extends关键字为泛型指定边界。为了能够调用f(),我们可以在给定泛型类边界的情况下帮助泛型类,告诉编译器必须接受边界后面的类型。这里使用扩展关键字。将上述代码更改为
总结
对于 ? extends Class ,? extends T,? super T,不是很理解的,可以自己把例子写一下,然后想一想。Java 泛型的特性在很多开源的框架上是用的非常多的。这快需要深入的理解一下,我想随着敲代码的年限上,应该到了后面会有不一样得理解吧。现在通过书上能够知道,理解得就只有这么多了。