java - 为什么我们不能将两个推断变量作为匿名类相互分配?

标签 java java-10

Java 10允许执行 anonymous classvar像:

var a1 = new Object(){};
var a2 = new Object(){};

但是这个赋值会抛出一个错误:

a1 = a2;

jshell> a1 = a2; | Error: | incompatible types: $1 cannot be converted to $1 | a1 = a2; | ^^

根据错误日志,为什么Java 10不能分配两个推断的var s 作为 anonymous class彼此之间,但它可以对其他类型执行相同的操作,例如 Long , String等等?

最佳答案

每个 new Object(){} 都会创建一个新类型(匿名类)。这些类型没有子类型-父类型关系,因此无法将 a1 分配给 a2,反之亦然。

但是当你有两个 long 变量时,它们实际上具有相同的 long 类型,因此它们是可以相互赋值的。

关于java - 为什么我们不能将两个推断变量作为匿名类相互分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49580431/

相关文章:

java - Kotlin 与 JDK 10

java - 导入java.awt无法解析

java - 在 Java 8 中将 lambda 表达式与旧集合类一起使用时,避免使用 .stream() 和 .collect()

java - Firebase 数据库 REST 获取 orderBy 值和 equalTo

java - ReentrantLock 和条件变量

java - 无法解析导入 java.awt

java - 在 Java 10 与 Java 8 中从纪元以来的毫秒转换为 LocalDateTime

Java Sockets 无法使用子网 IP 地址访问服务器

java - 如何在 Android 视频 View 中添加 cookies(Header)以支持旧版本的 android atleast till jellybean

java - 扫描仪无法读取文本文件