繁体   English   中英

使用anyMatch无法解析方法startsWith

[英]Cannot resolve method startsWith by using anyMatch

有人可以告诉我这是怎么回事。 我的代码很好,直到我添加了这部分代码,如果(!tmp.isEmpty()){return e.isEmpty(); 错误是:无法解析方法startsWith(java.lang.String)

@Test
    public void TestData() {
        ArrayList<String> rootOpts = new ArrayList<String>();
        rootOpts.add("aa");
        rootOpts.add("bb");
        rootOpts.add("ac");
        ArrayList<String> allSiblings = new ArrayList<String>();
        allSiblings.add("aa");
        allSiblings.add("ac");
        allSiblings.add("abc");

        System.out.println("allMatch " + rootOpts.stream()
                .map((e) -> {
                    System.out.println("e = " + e);
                    List<String> tmp = new ArrayList<String>();
                    tmp.addAll(allSiblings);
                    String[] CHs = {"ab","aa","ac"};
                    for (String chh : CHs) {
                        tmp.remove(chh);
                    }
                    if (!tmp.isEmpty()) {
                        return e.isEmpty();
                    }
                    return e;
                })
                .anyMatch(v -> v.startsWith("a")));
    }

我正在尝试重写以下代码(此代码包含在应该返回布尔值true或false的方法中):

for (Option e : rootOpts) {
            List<String> tmp = new ArrayList<String>();
            tmp.addAll(allSiblings);
            if (e.getData() != null && !e.getData().getString().isEmpty()) {
                String[] chs = {"ab","aa","ac"};
                for (String ch : chs) {
                    tmp.remove(ch);
                }
            } else {
                return false;
            }
            if (!tmp.isEmpty()) {
                return false;
            }
        }
        return true;

谢谢您的帮助

e.isEmpty()返回一个boolean 在下面的方法anyMatch要调用的方法startsWith这个boolean但是这种方法不上不存在boolean 因此,将您的代码更改为:

            if (!tmp.isEmpty()) {
                return ""; //or whatever string makes sense
            }

eString类型,而e.isEmpty()Boolean类型。

因此,函数的返回类型为Object

最后, Object没有一个startsWith函数,这与返回的原始String类型相反,这就是编译器抱怨的原因。

查看isEmpty()的返回类型- boolean 您打算如何在boolean true/false上执行startsWith :) Stream预测有可能获得布尔值,因此它不能让您对它进行startsWith

if (!tmp.isEmpty()) {
    return e.isEmpty();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM