计算机程序设计

Java泛型:描述和方法

Java语言的出现开始已经发生了很大的变化,它的功能无疑带来了积极的时刻。 其中一个显著的变化是引入了Java的通用或概括的。 此功能不仅使语言更加灵活多变,而且在使数据类型方面要安全得多。

事实是可以创建之前在Java通用代码引入泛型,不仅在类型的参考对象的条款。 这样的链接可以被分配任何对象。 毕竟,在Java类是隐性的对象类继承人。 然而,该方法是在从对象到目标类型的对象的表观转化与安全相关的许多类型的错误的潜在来源。 当使用概括所有的类型转换是隐式和自动执行,消除了即使发生错误的可能性。

Java泛型:说明和示例

让我们考虑概括如下图应用到普通班的一个简单的例子。 然后进行所有的细微之处和Java泛型的细微差别进行详细的检查。

注意在类声明对发生的方式。 类名称后,立即开角括号,这表明字母T它是一种填料,其是在建立这个类的一个实例的过程中会通过特定的类型替换。 它看起来如下:线对的OBJ =一双新的()。 应当注意的,而不是牛逼,可以指定任何字母,但是,作为一项规则,使用T,V或E.

注意:起始与第八版本的Java的,在构造声明参考角括号时可以留空指定目标类型。 这样的例子可以写成如上述:对的OBJ =一双新<>()。

当一个类以这样的方式声明,然后在他的身上,而不是特定类型的字段,链接,通过您可以使用字母方法返回的对象的。 因为T创建当类对象是由一个特定的类型,在这种情况下第一和第二场将是整数类型的取代。

以下的参数和与firstItem secondItem逻辑,提交给适当的构造也必须是整型或亚类的。 如果您尝试传输创建对象时是从指定什么不同的数据类型,编译器不会让这样的错误。 因此,参数构造当对象将是如下:线对的OBJ =一双新<>(新的整数(1),新的整数(2))。 这同样适用于参数和方法setFirst setSecond。 正如你可能已经猜到,方法getFirst getSecond并且将返回整数类型的值。

有几个参数类类型的全身

在广义类也可以声明在尖括号用逗号设置的类型的多个参数。 通过对类下面给出的情况下重新设计。

正如你所看到的,当你在尖括号创建该类的实例应该指示相同数量的类型作为参数。 如果你熟悉这种类型的数据结构的地图,你可以看到它使用完全相同的原理。 在那里,所述第一参数指定的密钥类型,并且所述第二 - 的值的类型。 应当指出的是,类型的传输时的对象参数可以重叠。 例如,下面的广告对类实例是完全正确的:对<字符串,字符串> OBJ。

概括的某些功能

在进一步讨论之前,应该指出的是,Java编译器不产生不同版本的类对的。 事实上,在编制的通用类型的所有信息的过程中被删除。 相反,你带来相应的类型,创建Pair类的一个特殊版本。 然而,在该方案仍然只有类的通用版本。 这个过程被称为Java中通用的清洁型。

需要注意的重要一点。 链接到不同版本的同一个Java泛型类的不能指向同一个对象。 也就是说,假设我们有两个环节:对<整数> OBJ1和对<双> obj2的。 因此,在线路OBJ1 = OBJ2错误。 虽然这两个变量是类型对的,对象它们所指,是不同的。 这是Java泛型类型安全的一个最好的例子。

对泛型类的限制

它是要知道概括只能用于引用类型很重要,那就是传递参数的泛型类的Java参数必须是一个类类型。 这些简单的类型,如,例如,双或长,无法转移。 换句话说,下面的行对类声明是不允许的:对的物镜。 然而,这种限制是不是一个严重的问题,因为对每个原始类型对应的Java包装类。 严格地说,如果类对要封装整数,布尔值avtoupakovka做你的一切:对<整型,布尔> OBJ =一双新<>(25,真正的)。

另一个严重的限制是无法创建参数类型的实例。 例如,下面的行会引起编译错误:t个第一=新T()。 这是显而易见的,因为你不事先知道参数是否通过一个完整的类或抽象,或甚至接口。 这同样适用于创建数组。

有限的类型

常常存在这样的情况时,有必要限制可作为参数传递到Java泛型类传递类型列表中。 让我们假设,在我们的类对我们要封装仅适用于他们进一步的数学运算的数值。 要做到这一点,我们需要定义参数类型的上限。 它是由遗传尖括号中传递的所有参数的超类的广告来实现。 它看起来如下:类对。 在这种方式中,编译器发现的,而不是参数T可以被取代或数类或其子类之一。

这是一种常见的前台。 这样的限制通常被用来在一个且相同的类提供兼容性类型参数。 考虑在我们的类对的例子:类对。 在这里,我们告诉编译器的类型T可以是任意的,和V型应该是T型或它的一个子类。

限制了“底”是完全一样的方式,但不是这个词延伸到拼写单词超。 被分类类对说,代替的T可以被取代或一个ArrayList,或它继承的任何类或接口。

通用的Java方法和构造

在Java中,概括可不仅应用于类,而且方法。 例如,一个通用的方法可以在常规课堂声明。

如上图所示,广告推广方法也没什么大不了的。 够的方法的返回类型把尖括号和在他们指定类型参数之前。

如果一切都做同样的构造函数:

在这种情况下尖括号中的设计师的名字前加上的,因为他没有返回值。 这两个方案的结果将是:

整型

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.delachieve.com. Theme powered by WordPress.