如果我定义下面的类没有限制仿制药的行为
public class SomeClass<T extends A> {..}
当然我不能定义一个变量,这种方式 - B
无关类。
SomeClass<B> instance = new SomeClass<B>();
但这个工程:
SomeClass instance = new SomeClass();
我缺少什么?
如果我定义下面的类没有限制仿制药的行为
public class SomeClass<T extends A> {..}
当然我不能定义一个变量,这种方式 - B
无关类。
SomeClass<B> instance = new SomeClass<B>();
但这个工程:
SomeClass instance = new SomeClass();
我缺少什么?
Java中的泛型是可选的。
如果你使用它们,你必须“正确地”使用它们。但如果你不使用它们的所有,它会编译得很好(但是你错过了它们提供的类型安全特性,并且应该得到关于它的编译时警告)。
泛型是编译时间。在运行时,它只是SomeClass。类似于我们创建非通用列表,如:
List list = new ArrayList(); // you will get warning to use generics
泛型只会帮助您并提供类型安全性,但仅在编译时。正确编译代码后,泛型将被删除,从代码角度来看,List看起来像没有任何泛型的常规列表。
其中一个原因是向后兼容。使用不带泛型的List的旧1.4代码将运行以及新代码。因此,您可以编写一个没有泛型的List和任何其他使用泛型的类。但是,当然你会失去任何类型的安全。