gpt4 book ai didi

java - instanceof 与自定义/核心类

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:35 28 4
gpt4 key购买 nike

为什么我可以使用 instanceof 针对我的自定义接口(interface)测试我的自定义类,而我无法对 java 核心类执行相同的操作?

interface A{}
class B{}
public class Tmp {
public static void main(String [] args) {
String s = "";
Integer i = 1;
B b = new B();
System.out.println(s instanceof A); //1
System.out.println(i instanceof A); //2
System.out.println(b instanceof A); //3
}
}

第 1 行和第 2 行无法编译。第 3 行将编译(并打印 false)。有什么区别?

最佳答案

如果编译器可以检测到 instanceof 操作永远不会为真,它将生成一个编译器错误。它通过遵循与类型转换相同的规则来确定这一点。具体规则详见Section 15.20.2 JLS 的:

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 - instanceof 与自定义/核心类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863041/

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