Почему конечная переменная класса экземпляра в Java?

Если переменная экземпляра установлена как final, ее значение не может быть изменено как

public class Final {

    private final int b;

    Final(int b) {
        this.b = b; 
    }

    int getFinal() {
        return  b = 8;  // COMPILE TIME ERROR 
    }
}



Где-то в коде я видел переменную класса экземпляраHashMap объявлен окончательным

 private  final Map cacheMap = new HashMap();

Я не мог понять, почему так объявлено? Обычно в этом случае это объявляется. Означает ли это, что если я добавлю хэш-карту, я не смогу изменить ее значение?

Редактировать:

Если cacheMap, объявленный как final, передается в качестве параметра другому классу, ошибка не отображается для final, если я изменяю его ссылку. Почему так?

 class CacheDTO {

    private Map conditionMap;

    public Map getConditionMap() {
        return conditionMap;
    }

    public void setConditionMap(Map conditionMap) {
        this.conditionMap = conditionMap;
    }
}

затем

private  final Map cacheMap = new HashMap();
CacheDTO cc = new CacheDTO();
cc.setConditionMap(cacheMap);
Map cacheMapDeclaredAsFinal = cc.getConditionMap();
Map newMap = new HashMap();
cacheMapDeclaredAsFinal = newMap;    // In this case no error is shown. Though cacheMapDeclaredAsFinal reference is obtained by calling cc.getConditionMap() and cacheMapDeclaredAsFinal refers to final.

Ответы на вопрос(11)

Ваш ответ на вопрос