Olá, Moacyr.
Tudo bem?
No método somaConteudoNaCaixa
, a ideia é somar o valor passado como parâmetro ao conteúdo atual da caixa, mas isso só é feito se ambos os tipos forem compatíveis (por exemplo, ambos sendo Integer
, Double
ou String
). Caso contrário, o método retorna null
.
Vamos analisar o código:
public <T> T somaConteudoNaCaixa(T valor) {
if (this.conteudo instanceof Integer c && valor instanceof Integer i) {
Integer resultado = c + i;
return (T) resultado;
} else if (this.conteudo instanceof Double c && valor instanceof Double d) {
Double resultado = c + d;
return (T) resultado;
} else if (this.conteudo instanceof String c && valor instanceof String s) {
String resultado = c + "\n" + s;
return (T) resultado;
}
return null;
}
No trecho acima, se this.conteudo
e valor
não forem do mesmo tipo, o método retorna null
. Isso significa que não há uma "devolução do valor anterior do conteúdo", mas sim um retorno null
, indicando que a operação não foi realizada devido à incompatibilidade de tipos.
Vamos ver um exemplo prático para ilustrar:
public static void main(String[] args) {
Caixa<Double> caixaDeValor = new Caixa<>();
caixaDeValor.setConteudo(150.50);
System.out.println(caixaDeValor.somaConteudoNaCaixa(350.50)); // Saída: 501.0
System.out.println(caixaDeValor.somaConteudoNaCaixa("texto")); // Saída: null
}
No exemplo acima:
- Quando somamos
150.50
com 350.50
, a saída é 501.0
porque ambos são do tipo Double
. - Quando tentamos somar
150.50
com "texto"
, a saída é null
porque 150.50
é Double
e "texto"
é String
, resultando em tipos incompatíveis.
Portanto, a frase "devolvemos o valor anterior do conteúdo" pode ser confusa. O correto é entender que, se os tipos não forem compatíveis, o método retorna null
, sem realizar nenhuma operação.
Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.