除了设计问题,在现代JVM上执行速度更快的是什么?
foo instanceof Bar
或
Bar.class.isInstance(foo)
为什么?
答案 0 :(得分:9)
答案 1 :(得分:1)
foo instanceof Bar
应该更快。
如果在编译时不清楚你有哪个班级,你可以使用Bar.class.isInstance(foo)
。
考虑以下事项:
void test(Object o1, Object o2) {
o1.getClass().isInstance(o2);
}
在此示例中,JVM在运行时决定哪个类调用该方法。
使用instanceof
这是不可能的。
因此,如果您在编译时知道该类,则应使用instanceof