以非布尔方法返回布尔值

时间:2017-03-07 06:35:20

标签: java

如果result = false,我试图返回False。我不能改变返回类型。如果result = false,linkList需要返回false。谢谢

selectedIndexProperty

5 个答案:

答案 0 :(得分:6)

很简单,你不能。方法签名非常清楚地表明它将返回List<T>,并且List<T>是您将返回的内容。

您可以返回null

答案 1 :(得分:0)

您无法将boolean返回List,您可以做的是返回null

当您检查条件时,您可以做的是,创建另一种封装apply方法的方法,如果listnull则返回,则返回false。如下所示:

if(linkList == null)
   return false;
else
   return true;

此外,使用==进行比较。

如下:

@Override
public List<T> apply(T x){               
    boolean result = pred.check(x);              
    if(result == true) {
        linkList.add(x);
        return linkList;
    }
    if(result == false){
         return null;              
    }
    return linkList;
}

如果是布尔值,则无需使用==,如下所示

@Override
public List<T> apply(T x){               
    boolean result = pred.check(x);              
    if(result){
        linkList.add(x);
        return linkList;
    }
    if(result){
         linkList = false;              
    }
    return linkList;
}

答案 2 :(得分:0)

如果方法专门返回List,则不能返回false。你可以做的是返回'null':

@Override
public List<T> apply(T x){               
    boolean result = pred.check(x);              
    if (result == true) {
        linkList.add(x);
        return linkList;
    }
    if (result == false) {
         linkList = null;              
    }
    return linkList;
}

然后在调用方法中执行以下操作:

List<T> list = apply(x);
boolean result;
if (list == null){
   result = false;
}

答案 3 :(得分:0)

抱歉发芽。你不能返回不同的类型。返回NULL或者返回一个对象是你最好的机会。

答案 4 :(得分:0)

如果结果为假,则返回null,所以我认为如果结果为假,则不需要进行测试!

private static class FilteringFlatApplyFunction<T> implements FlatApplyFunction<T,T> {        
    private final Predicate pred; 
    LinkedList<T> linkList = new LinkedList<T>();

    public FilteringFlatApplyFunction(Predicate<T> p) {                              
        this.pred = p;
        this.linkList = linkList;
    }

    @Override
    public List<T> apply(T x){               
        boolean result = pred.check(x);              
        if (result) {
            linkList.add(x);  
        }                         
        return linkList;                              
    }
}