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