我见过的大多数引用,以及我的IDE的代码完成都在我的变量类型及其实现上指定了Generic类型,例如.
Liststring = new ArrayList ();
最近我开始在实现中跳过泛型类型,例如.
Liststrings = new ArrayList();
假设编译器只检查它的spiffy泛型voodoo的类型,并且实现不应该关心,因为它的泛型类型在编译时被擦除,并且根本不应影响运行时.
我天真吗?是否有理由在实现中包含泛型类型?
编译器可能允许您编写具有此类分配的代码(取决于您的警告/错误设置),但它是不安全的.这是一个例子:
Listdates = new ArrayList (); List list = dates; List strings = list; strings.add("a"); Date d = dates.get(0); // Boom!!