代码之家  ›  专栏  ›  技术社区  ›  Vipin

Lambda表达式的编码变体可选.filter

  •  0
  • Vipin  · 技术社区  · 6 年前

    optional.filter(s -> (s.length() > 4))

    这是完整的工作代码:

    public class Main {
        public static void main(String[] args) {
    
            Optional<String> optional = Optional.of("Hello");
    
            System.out.println(optional.filter(s -> (s.length() > 4)).get());
        }
    }
    

    例如,下面有一个错误的方法,虽然它抛出编译语句“不能解析方法长度”,但是这里用这个来解释我所想的那种变化。

    optional.filter(length() > 4)
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Ousmane D.    6 年前

    您试图引入java中不允许的语法。

    以下是有效语法:

    optional.filter(s -> s.length() > 4)
    

    optional.filter(s -> {
         return s.length() > 4;
    })
    

    或:

    optional.filter(new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.length() > 4
            }
    })
    

        2
  •  0
  •   Pankaj Singhal    6 年前

    Function / Predicate /等单独使用。它还增加了可读性。

    例如,可以定义 谓语

    Predicate<String> byStrLengthCheck = s -> s.length() > 4;
    

    使用上面的 谓语

    System.out.println(optional.filter(byStrLengthCheck).get());