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

标签 java

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

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

最佳答案

是的,在这种情况下实际上是一样的。

这里

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

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

这里

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

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

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

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

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

关于java - Java中的 'new Class[] {iface}'和 'new Class<?>[] {iface}'是一样的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189356/

相关文章:

java - 如何区分智能卡读卡器错误和智能卡错误

java - 在spring mvc中使用http请求参数

java - 重写嵌套 for 循环以提供更好的格式化输出

java - 臭名昭著的 Goto、Java、自动代码

java - 为什么此图像比较会使我的应用程序崩溃?

java - 嵌套循环在 Java 程序中不起作用

java - "ABC"和新字符串 ("ABC"之间有什么区别)?

java - Mapstruct:提取对象的属性

java - 如何在 Spring Boot 中区分具有相同名称但不同查询参数的 edpoint

java - 点击播放按钮,应用程序已停止,重新打开