有时您需要基于instanceof
进行分支,然后对具体类型进行一些操作。
if (obj instanceof IonObject) {
Ion.assertRegistered((IonObject) obj);
writeMark(((IonObject) obj).getIonMark());
((IonObject) obj).save(this);
return;
}
在这种情况下,是否使所需类型的局部变量使代码更有效,还是仅仅是视觉上的改进?
if (obj instanceof IonObject) {
// cache the casted value
IonObject iobj = (IonObject) obj;
Ion.assertRegistered(iobj);
writeMark(iobj.getIonMark());
iobj.save(this);
return;
}
最佳答案
转换的费用很小,因为它必须检查类型是否合适(否则实际上并不会改变任何内容)
但是,在这种情况下,您可以假定JIT将优化此检查,以便在您编写代码的任何一种方式下都可以完成该检查。
如果代码运行得不够及时(很有可能),则代码会稍慢一些,但没关系,因为调用不够。即JIT和非JIT之间的性能差异要大得多。
关于java - “预浇铸”与每次浇铸的效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23205061/