Я наткнулся на следующий код в базе кода, над которой я работаю:
public final class ConfigurationService {
private static final ConfigurationService INSTANCE = new ConfigurationService();
private List providers;
private ConfigurationService() {
providers = new ArrayList();
}
public static void addProvider(ConfigurationProvider provider) {
INSTANCE.providers.add(provider);
}
...
INSTANCE
объявлен final
. Почему объекты могут быть добавлены в INSTANCE
? Не должно ли это сделать недействительным использование финала. (Это не так).
Я предполагаю, что ответ должен что-то делать с указателями и памятью, но хотел бы знать наверняка.