Итак, мой вопрос: в чем смысл иметь конечные переменные экземпляра, если они не могут иметь разные значения для каждого экземпляра.
blockquote>Они могут, но эти значения не могут быть изменены после создания . Вы можете назначать значения только для полей конечного экземпляра в инициализаторах и конструкторах переменных экземпляра, и вы должны присваивать значения таким образом всем экземплярам.
Обратите внимание, что в вашем коде здесь:
Foof() { whuffie=42; //compile time error }
... комментарий неверен. Это задание должно быть абсолютно корректным.
Конечные поля полезны для реализации неизменяемости - что помогает легко рассуждать об объекте. Например,
String
является неизменяемым, поэтому, если вы проверяете строку и сохраняете копию ссылки, вы знаете, что проверка будет по-прежнему правильной позже.Сравните это с
java.util.Date
, где если вы действительно хотите иметь какую-либо веру в правильность валидации, вам нужно создать защитную копию значенияDate
и не предоставлять ссылку на какой-либо другой код, если он изменит базовый момент представленный.
В браузере метрик вы найдете сводные метрики за определенный период времени. За рассматриваемый вами период было 0 вызовов, но на графике было 4 вызова, и общее количество вызовов составило 288. Трудно сказать, на что вы смотрите, может быть, приложите скриншот?