在java中,如果不使用这两种语言,我如何做到这一点?

在java中,如果不使用这两种语言,我如何做到这一点?,java,functional-programming,refactoring,either,Java,Functional Programming,Refactoring,Either,我有一个返回字符串的函数 私有字符串processQuery(字符串[]args){ //代码逻辑 } 返回的结果可以是回答(您的帐户详细信息为$account_detail.)或回答(对不起,我听不懂您的意思?)。根据结果,代码将执行不同的操作。 我想到的是使用或者 private或processQuery(字符串[]args){ //代码逻辑 } 私有无效回复(字符串[]args){ //代码逻辑 var或=processQuery(args); 返回任意一个。折叠((l){ //返回的结

我有一个返回字符串的函数

私有字符串processQuery(字符串[]args){
//代码逻辑
}
返回的结果可以是回答
(您的帐户详细信息为$account_detail.)
或回答
(对不起,我听不懂您的意思?
)。根据结果,代码将执行不同的操作。 我想到的是使用
或者

private或processQuery(字符串[]args){
//代码逻辑
}
私有无效回复(字符串[]args){
//代码逻辑
var或=processQuery(args);
返回任意一个。折叠((l){
//返回的结果是答案
},(r){
//返回的结果是响应
});
}
若它返回左边,那个么它就是答案,若它返回右边,那个么它就是响应。但由于java中没有这两种类型,所以我尝试传递AtomicBoolean


只有使用java stl才能更好地解决此问题。

您可以使用
Pair

Pair-Pair=Pair.with(“Blah”、“Blee”)

看一些例子


如果您的
响应
实际上表示某种错误,则更好的方法是抛出某种异常,并保留
字符串的返回值
以表示“良好”流程。

一种解决方案是让该方法使用两个lambda函数,分别对应于正确答案和错误答案,然后只调用相应的函数

private void processQuery(String[] args, Consumer<String> correct, Consumer<String> incorrect){
    if (args.length == 0) {
        incorrect.accept("Sorry I cannot understand you?");
        return;
    }

    correct.accept("Your account detail is $account_detail.");
}
或者为不同的函数创建变量

Consumer<String> badAnswer = reply -> System.out.println("Fail, " + reply);
Consumer<String> goodAnswer = reply -> System.out.println("Success!, " + reply);
private void reply(String[] args){
    processQuery(args, goodAnswer, badAnswer);
}
Consumer badAnswer=reply->System.out.println(“失败,”+reply);
消费者goodAnswer=reply->System.out.println(“成功!,”+reply);
私有无效回复(字符串[]args){
processQuery(args、goodAnswer、badAnswer);
}

这不是只有JavaFX吗?
Consumer<String> badAnswer = reply -> System.out.println("Fail, " + reply);
Consumer<String> goodAnswer = reply -> System.out.println("Success!, " + reply);
private void reply(String[] args){
    processQuery(args, goodAnswer, badAnswer);
}