Java 10允许执行 anonymous class
与 var
像:
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/