可以AdditionalBound
在JLS8中描述的演员表达式用于除了 lambda表达式或方法引用之外的任何东西吗?
据说,它可能是:
( ReferenceType {AdditionalBound} ) UnaryExpressionNotPlusMinus
然后:
由强制转换表达式引入的强制转换上下文(第5.5节)的目标类型是(...)由出现在强制转换运算符中的ReferenceType和AdditionalBound术语表示的交集类型.
但我找不到非 -lambda 或非 -method-reference示例的可行示例,例如:
X x = (I1&I2) some_UnaryExpressionNotPlusMinus
UPD:
特别是,它允许类似的东西
X x = (I1&I2) ~ UnaryExpression
,~
一元运算符在哪里.
我不知道应该是什么X
,I1
,I2
而且UnaryExpression
在这种情况下.
UPD-2:感谢@Jimmy T.,他展示了可行的例子
Object x = (Number&Serializable)~0;
.
但是很高兴看到非冗余的例子,这种铸造有意义.
UPD-3:根据以上所有这些表达式都已编译,但所有这些表达式都没有任何意义:
Object l1 = (Collection & Iterable) new ArrayList<>(); List l2 = (ByteList & Iterable) new ArrayList<>(); Collection l3 = (List & Iterable) new ArrayList<>();
无法想象这种铸造是否明智的情况.