这两个语句在Java中是否相同?
//code 1
Object o1[] = new Class[] {iface};
//code 2
Object o2[] = new Class<?>[] {iface};
Run Code Online (Sandbox Code Playgroud)
是的,在这种情况下实际上是相同的。
这里
Object o1[] = new Class[] {iface};
Run Code Online (Sandbox Code Playgroud)
您正在使用带有未参数化类型的原始类型Class。
这里
Object o2[] = new Class<?>[] {iface};
Run Code Online (Sandbox Code Playgroud)
您使用的是参数化Class类型,但带有通配符。
两者都不影响可以进入数组的内容。
由于您的引用属于 类型Object[],因此您无论如何都不能依赖任何进一步的类型安全,因此它们是等效的。
Vulcan 在评论中提出了一个很好的观点,即原始类型将在编译过程中为您创建警告。您可能想避免这种情况。