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.
4 réponses
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é.
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>
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;
}
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
Questions liées
De nouvelles questions
java
Java est un langage de programmation de haut niveau. Utilisez cette balise lorsque vous rencontrez des problèmes pour utiliser ou comprendre la langue elle-même. Cette balise est rarement utilisée seule et est le plus souvent utilisée en conjonction avec [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] et [maven].