这两个语句在Java中是否相同?
//code 1
Object o1[] = new Class[] {iface};
//code 2
Object o2[] = new Class<?>[] {iface};
答案 0 :(得分:4)
是的,在这种情况下它实际上是相同的。
下面
Object o1[] = new Class[] {iface};
您使用的是具有未参数化Class
类型的原始类型。
下面
Object o2[] = new Class<?>[] {iface};
您使用的是参数化Class
类型,但带有通配符。
既不影响可以进入数组的内容。
由于您的参考类型为Object[]
,因此无论如何都不能依赖任何进一步的类型安全,因此它们是等效的。
Vulcan, in the comments,提出了一个很好的观点,即原始类型将在编译期间为您创建警告。你可能想避免这种情况。