2014-10-17 24 views
-2

我已阅读有效的Java第5章泛型。编译器在将子类分配给java中的超类时是否插入了类型转换?

“当你使用泛型集合,而不是原始的类型,编译器插入一个你看不见的管型和保证......”

因此,这里是我的问题。

假设我们有一个Cat类和一个Animal类。

Class Animal{} 

Class Cat extends Animal{} 

我们可以这样做:

Animal animal=new Cat(); 

该编译器插入像类型转换:

Animal animal=(Animal)(new Cat());? 

因为我觉得猫的动物,他们有不同类型的引用。

+1

你的问题如何适用于仿制药?您所指的代码段中没有泛型。 – 2014-10-17 01:01:42

+0

@SotiriosDelimanolis这是我的想法。我认为他们有共同点? – AlexWei 2014-10-17 01:03:01

+0

引用明确指代泛型,但是您发布的代码没有任何代码。那么关系是什么?你认为他们有什么共同之处?你问我是否认为他们有共同点? – 2014-10-17 01:04:07

回答

3

是否编译器插入等类型转换:

CatAnimal子类型。您可以将类型Cat的值分配给类型为Animalwidening reference conversion的变量(或将其绑定到参数)。

加宽引用转换从任何引用类型S存在于任何 引用类型T,提供ST一个亚型(§4.10)。

有没有涉及或必要的演员。泛型不相关。

相关问题