В последнее время возник вопрос о том, было ли в Java хорошей идеей назначить результаты вызова геттера локальной переменной, чтобы избежать множественных вызовов одного и того же доступа. Я не могу найти оригинальное сообщение, но, похоже, консенсус, как правило, не требуется, так как Hotspot в любом случае оптимизирует просрочку вызова метода.Локальное присвоение переменных, чтобы избежать множественных нажатий.
Однако, какова точка зрения на использование этой техники, чтобы избежать множественных приемов? На данный момент я столкнулся с выбором между:
if (a instanceof Foo) {
// Cast once and assign to local variable.
Foo foo = (Foo)a;
if (foo.getB() == 1 && foo.getC() == 2) {
...
}
}
ИЛИ
if (a instanceof Foo) {
// Cast twice making code compact but possibly less readable.
// Also, is there an overhead in multiple casts?
if (((Foo)a).getB() == 1 && ((Foo)a).getC() == 2) {
...
}
}
Что не так с Lisp? –
Ничего, я люблю Лиспа, у него просто много круглых скобок, вот и все. –