java - 如何让这个 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?我查看了相关的帖子,但它们更多地与为什么会出现错误有关,而不是如何处理它。
(我知道没有实际需要这样做。我只是想知道是否可以这样做。如果可以,那怎么做?如果不能,那为什么不呢?)
解决方案
最简单的方法是:
boolean flag = false;
但如果由于某种原因这对你没有吸引力,你可以写:
boolean flag = ((Object)favoriteFood) instanceof StringBuilder; // false
然后贿赂同事让它通过代码审查。
推荐阅读
- c++ - 忽略 SIGSEGV 并继续执行
- json-api - 为 API JSON 响应格式化数据
- docker - 如何从称为地点的地方排除依赖的罐子 pom.xml
- reactjs - React lazy 不会导致将包拆分成块
- regex - Django url随参数传递而变化
- kubernetes - Re-use PersistentVolume after re-installing a helm deployment
- c++ - 如何创建自定义组件?访问私有字段时出错
- jquery - Jquery Ajax - 使用动态分页获取 API 调用
- excel - 在 Excel 工作表中搜索并根据带有层次结构的 where 子句返回一个值?
- apache-spark - Spark - 使用多个“何时”优化查询