2011-12-16 4 views
7

Я читал source code of TextView, и я встретил этот фрагмент кода:Android Итоговая Переменные

RectF mTmpRectF = new RectF(); 
float[] mTmpOffset = new float[2]; 
ExtractedTextRequest mExtracting; 
final ExtractedText mTmpExtracted = new ExtractedText(); 

Итак, они определяют mTmpExtracted как окончательные, но не mTmpRectF.

Я прочел это What does "final" do if you place it before a variable?, где анализируется, когда использовать окончательный.

Таким образом, поскольку оба объекта (mTmpRectF & mTmpExtracted) могут быть окончательными в данном конкретном случае, есть ли другая причина (то есть performace и т. Д.), Что только один из них установлен в final или это просто код стиля разработчика?

Спасибо!

ответ

7

Я бы сказал, что extractText был установлен в final, поэтому он не может быть изменен после того, как он был извлечен, где, поскольку код не беспокоит, если прямоугольник get изменен.

+0

Таким образом, за исключением случаев, когда требуется присвоение конечной переменной, это является видом ограничения/предупреждения для разработчика, что он не должен изменять эту переменную? –

+1

Да, он заявляет, что это его окончательное состояние по какой-то причине. – Blundell

Смежные вопросы