java - 什么是更高性能的 equal 或 instanceof?
问题描述
表演者使用哪种方法?
等于:
public boolean hasSellByDate(Object item) {
if ("Pear".equals(item.getClass().getSimpleName())) {
return true;
}
return false;
}
实例:
public boolean hasSellByDate(Object item) {
if (item instanceof food.Pear) {
return true;
}
return false;
}
这两种方法有什么区别,每种情况有什么缺点?
解决方案
第二个要好得多,因为第一个可以通过重构来破坏,并且类型系统不会让您知道。
您还应该知道,第一种方法不适用于 的子类Pear
,如果您有的话。更糟糕的是,如果您"Pear"
在不同的命名空间中调用了多个类,可能会感到困惑。
至于性能,您需要进行基准测试,但我希望第二个也更快,因为instanceof
它是 JVM 上的单个操作码(https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings)。
推荐阅读
- ruby-on-rails - inverse_of: nil 是什么意思?
- ios - metallib:错误读取模块:无效的位码签名
- c# - 连接 char 和 int 的干净方法
- wordpress - 如何配置 wordpress 开发、主要、次要更新配置
- python - 在特定范围的列表中添加元素
- mysql - 希望创建一个仅显示一列 MYSQL 的子查询
- laravel - 如何使用 laravel 集体创建 optgroup?
- python - 如果文本以开头和结尾,则从一个文本文件复制到另一个
- python - TensorFlow 2d 直方图
- java - 访问 jasypt 的 FixedStringSaltGenerator 和 setSaltGenerator 生成的 SALT?