gpt4 book ai didi

java - 为什么 Java 上的 instanceof 会出现编译错误?

转载 作者:行者123 更新时间:2023-12-03 16:00:58 26 4
gpt4 key购买 nike

class A {}
class B extends A {}
class C extends A {}
A x = new B();
B y = new B();
x instanceof C
y instanceof C
为什么 y instanceof Cx instanceof C 时给出编译错误(不兼容的类型)工作正常?

最佳答案

当编译器可以告诉 y instanceof C永远回不去true ,它会产生编译错误。 y的编译时类型是 B , 和类(class) B与类(class)无关 C .因此,类 B 的一个实例永远不能是类 C 的实例.
另一方面,x instanceof C可能会返回 true , 因为编译时类型为 xA , 和 CA 的子类.
JLS 引用:

15.20.2. Type Comparison Operator instanceof

If a cast of the RelationalExpression to the ReferenceType would be rejected as a compile-time error, then the instanceof relational expression likewise produces a compile-time error. In such a situation, the result of the instanceof expression could never be true.

关于java - 为什么 Java 上的 instanceof 会出现编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66795933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com