Java 围绕条件链接的功能接口

Java Functional Interface chaining around conditions

最近一直在尝试使用函数式接口链接,我正在尝试了解以下是否可行。

如果我有这样的 FI:

@FunctionalInterface
public interface MyProcessor<T, R> {
    R process (T t);

    default MyProcessor<T, R> andThenProcess(MyProcessor<T, R> after) {
        Objects.requireNonNull(after);
        return (T t) -> { process(t); return after.process(t); };
    }
}

我想知道我是否可以围绕检查逻辑构建流程链...因此以下是简单明了的示例

public static void main(String[] args) {

    MyProcessor<String, String> uprocessor = string -> string.toUpperCase();
    MyProcessor<String, String> lprocessor = string -> string.toLowerCase();
    MyProcessor<String, String> processor = lprocessor.andThenProcess(uprocessor);

    System.out.println(processor.process("Justin Skidmore"));

}

但我正在尝试执行以下操作,并想知道这是否合理:

MyProcessor<String, String> uprocessor = string -> string.toUpperCase();
MyProcessor<String, String> lprocessor = string -> string.toLowerCase();
MyProcessor<String, String> processor = lprocessor;

if (true) {
   processor.andThenDoThis(uprocessor);
}

System.out.println(processor.process("Justin"));

以上方法行不通,我有点理解为什么,但是有没有一种合适的方法可以让我达到我在这里想要完成的目标。我进行了搜索,但遗憾的是还没有遇到任何情况或答案。

谢谢大家。

看起来您的 andThenDoThis 方法正在返回一个新实例,而不是修改现有实例。你是说

processor = processor.andThenDoThis(uprocessor);