有时您需要基于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/

10-11 07:30