1
resposta

Variavel TYPE_CONFIG

Fiquei com uma dúvida, por que a variável de classe TYPE_CONFIG em GsonDeserializer foi preenchida com um valor inicial. public static final String TYPE_CONFIG = "br.com.alura.ecommerce.type_config"; Ela não deveria ser preenchida com o type das classes service?

1 resposta

Boa noite Renato, beleza?

Na verdade a variável TYPE_CONFIG representa a chave do mapa e não o valor, no valor sim está o o tipo da classe que vai ser Deserializada, veja o exemplo abaixo:

 public void configure(Map<String, ?> configs, boolean isKey) {
        String typeName = String.valueOf(configs.get(TYPE_CONFIG));
        try {
            this.type = (Class<T>) Class.forName(typeName);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("Type for deserialization does not exist in the classpath." ,e);
        }
    }

Reparou que o tipo do configs é uma mapa? Representando grosseira mente ele estaria em memoria da seguinte forma:

key = br.com.alura.ecommerce.type_config

value = User.class

Ai você precisar dar um get na chave br.com.alura.ecommerce.type_config e irá receber o valor User.class