允许使用原始类型以确保与引入泛型之前编写的代码兼容。原始类型的工作原理是,仅从所有方法参数和返回类型中忽略 所有
类型信息,甚至与该类的类型参数无关的类型信息。正如您所发现的,这可能导致奇怪的结果。但这比这更奇怪。例如,此编译。
public class Main { public static class GenericClass<T> { public void foo(Class<Integer> clazz) { } } public static void main(String... args) { GenericClass unsafeInstance = new GenericClass(); unsafeInstance.foo(String.class); }}


