¿Por qué se puede modificar el objeto final?
Encontré el siguiente código en una base de código en la que estoy trabajando:
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
se declara comofinal
. ¿Por qué se pueden agregar objetos aINSTANCE
? ¿No debería eso invalidar el uso de final? (No lo hace)
Supongo que la respuesta tiene que ver con los punteros y la memoria, pero me gustaría saberlo con certeza.