我想返回列表中与主机具有相同域的主机。但它给了我和错误:"此方法必须返回一种类型的主机" 。
我如何返回对象主机?
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);
}}
}
感谢。
答案 0 :(得分:2)
首先,要比较String
,您需要使用String.equals
if(domain.equals(hosts.get(i).getDomain()))
其次,如果找不到,则不返回任何内容,您需要返回null
或抛出异常
for(int i = 0; i < hosts.size(); i++) {
...
}
return null;
或
for(int i = 0; i < hosts.size(); i++) {
...
}
throw new ItemNotFoundException(); //Or any exception you want
答案 1 :(得分:2)
stream
和Optional
return hosts.stream().filter(host -> host.getDomain().equals(domain)).findAny();
结果类型为Optinal<Host>
答案 2 :(得分:1)
你只需要在循环后返回null。
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;
}
如果找不到任何内容,您也可以抛出异常。
答案 3 :(得分:0)
可能是因为你方法的最后一行不是退货吗?也许试试这个:
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;
}