'new Class [] {iface}'和'new Class <! - ? - > [] {iface}'在Java中是一样的

时间:2014-03-05 05:29:53

标签: java

这两个语句在Java中是否相同?

//code 1
Object o1[] = new Class[] {iface};
//code 2
Object o2[] = new Class<?>[] {iface};

1 个答案:

答案 0 :(得分:4)

是的,在这种情况下它实际上是相同的。

下面

Object o1[] = new Class[] {iface};

您使用的是具有未参数化Class类型的原始类型。

下面

Object o2[] = new Class<?>[] {iface};

您使用的是参数化Class类型,但带有通配符。

既不影响可以进入数组的内容。

由于您的参考类型为Object[],因此无论如何都不能依赖任何进一步的类型安全,因此它们是等效的。

Vulcan, in the comments,提出了一个很好的观点,即原始类型将在编译期间为您创建警告。你可能想避免这种情况。