Veja que o método faz duas coisas, que são buscar num HashMap as informações relativas a João e Marcos. Mas sabendo-se que um método não pode ter dois retornos, como faço para aproveitá-lo para me fornecer as duas saídas?
Como faço para “juntar” as duas informações para ter uma única saída com as duas idades numa String? Posso utilizar um toString() para isso?
Uma suposição… se ideia for listar as idades de um conjunto de pessoas, para fazer uma média, por exemplo, o método pode retornar um array de inteiros.
Mas realmente não está claro a intenção. As pessoas que o método recupera a idade são fixas?
Na verdade é apenas uma suposição. Com certeza, enxergo que seria melhor deixar o método sem valores fixos para que ele retorne valores de idades de determinadas pessoas quando e as quais eu quiser, mas preciso de uma forma didática de passar isso para os meus alunos, e gostaria de passar os 3 conceitos, o de retorno de somente um “dado” do método, o de converter aqueles 2 dados inteiros em String, e a utilização do toString(). Gostaria de saber utilizar o toString() para transformar os 2 valores em String e concatená-los para serem o único retorno do método.
Pessoalmente, acredito que não é melhor misturar conceitos ao ensinar pessoas leigas. Cada um de uma vez é mais didático, na minha opinião.
Para retorno de valores múltiplos, tipo um registro, use um objeto com um atributo para cada valor.
Por exemplo:
[code]package org.escola.exemplo01;
import java.util.HashMap;
import java.util.Map;
public class ExemploRetornosMetodo {
private Map<String, Integer> pessoas = new HashMap<String, Integer>();
public ExemploRetornosMetodo() {
pessoas.put("João", 28);
pessoas.put("Marcos", 30);
}
/**
* Exemplo de retorno de uma idade, com um nome de método que descreve claramente seu intuito
*/
public Integer getIdadeJoao() {
return pessoas.get("Joao");
}
public Integer getIdadeMarcos() {
return pessoas.get("Marcos");
}
/**
* Classe usada para retorno de um "registro" com as idades
*/
public static class IdadesPessoas {
private Integer idadeJoao;
private Integer idadeMarcos;
public IdadesPessoas(Integer idadeJoao, Integer idadeMarcos) {
this.idadeJoao = idadeJoao;
this.idadeMarcos = idadeMarcos;
}
public Integer getIdadeJoao() {
return idadeJoao;
}
public Integer getIdadeMarcos() {
return idadeMarcos;
}
}
/**
* Exemplo de método que retorna um "registro", ou seja, um objeto com vários valores
*/
public IdadesPessoas consultaIdades() {
return new IdadesPessoas(getIdadeJoao(), getIdadeMarcos());
}
/**
* Exemplo de toString() significativo
*/
public String toString() {
return "Joao e Marcos tem, respectivamente, " + getIdadeJoao() + " e " + getIdadeMarcos() + " anos.";
}
utluiz, muito obrigado pela resposta.
Vou com certeza levar a sua dica em consideração, e agradeço novamente pelo envio do código com o exemplo.
1 Abraço,