首页 > 解决方案 > 如何让这个 Java instanceof 测试返回 false 而不是错误?

问题描述

我一直在我的 Java 代码中试验 instanceof。

public class Test {
    public static void main(String[] args) {
        String favoriteFood = "sandwich";
        boolean flag = favoriteFood instanceof StringBuilder; //incompatible types
    }
}

我从标志中收到错误,因为无法将 String 强制转换为 StringBuilder。我知道测试字符串以检查它是否是 StringBuilder 的实例是不合逻辑的,因为字符串永远不能转换为 StringBuilders。我也明白快速失败的好处。但是,有没有办法仍然运行这个测试并返回 false?我查看了相关的帖子,但它们更多地与为什么会出现错误有关,而不是如何处理它。

(我知道没有实际需要这样做。我只是想知道是否可以这样做。如果可以,那怎么做?如果不能,那为什么不呢?)

标签: javainstanceoftypechecking

解决方案


最简单的方法是:

boolean flag = false;

但如果由于某种原因这对你没有吸引力,你可以写:

boolean flag = ((Object)favoriteFood) instanceof StringBuilder; // false

然后贿赂同事让它通过代码审查。


推荐阅读