Je souhaite renvoyer l ' hôte qui a le même domaine que l' hôte dans la liste. Mais ça me donne une erreur: "Cette méthode doit retourner un type d'hôte" .

Comment dois-je renvoyer l'objet Host ?

public class Manager {

private List<Host> hosts = new ArrayList<Host>();

public Host getHost (String domain) {

      for(int i = 0; i < hosts.size(); i++) {
          if(domain == hosts.get(i).getDomain()) {
              return hosts.get(i);
          }}      
  }

Merci.

1
Tetsuo 17 nov. 2017 à 17:14

4 réponses

Meilleure réponse

Il vous suffit de renvoyer null après votre boucle.

  public Host getHost (String domain) {
        for(int i = 0; i < hosts.size(); i++) {
            if(domain.equals(hosts.get(i).getDomain())) {
              return hosts.get(i);
            }
        }      
        return null;
    }

Vous pouvez également lancer une exception si rien n'est trouvé.

1
DevJava 17 nov. 2017 à 14:47

Qu'en est-il de stream et Optional

return hosts.stream().filter(host -> host.getDomain().equals(domain)).findAny();

Le type de résultat sera Optinal<Host>

2
Anton Balaniuc 17 nov. 2017 à 14:29

Serait-ce parce que la dernière ligne de votre méthode n'est pas un retour? Essayez peut-être ceci:

public Host getHost (String domain) {
      Host host = null;
      for(int i = 0; i < hosts.size(); i++) {
          if(domain.equals(hosts.get(i).getDomain())) {
              //saves in the variable declared outside of for
              host = hosts.get(i);
          }
      }
      //attention: if nothing is found in your arraylist, the returned object is refers to null
      return host;
  }
0
Yasin Mantas 17 nov. 2017 à 14:38

Tout d'abord, pour comparer String, vous devez utiliser String.equals

if(domain.equals(hosts.get(i).getDomain()))

Deuxièmement, vous ne retournez pas quelque chose si cela n'est pas trouvé, vous devez soit retourner null, soit lever une exception

 for(int i = 0; i < hosts.size(); i++) {
     ...
 }
 return null;

Ou

 for(int i = 0; i < hosts.size(); i++) {
     ...
 }
 throw new ItemNotFoundException(); //Or any exception you want
2
AxelH 17 nov. 2017 à 14:29
47352640