当前位置: 首页 > 知识库问答 >
问题:

如何在不使用任何一个的情况下在java中执行此操作?

常元章
2023-03-14

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

private String processQuery(String[] args){
    //code logic
}

返回的结果可以是回答(您的帐户详细信息为$account_detail.),也可以是回答(对不起,我听不懂您的意思?) 。根据结果,代码将执行不同的操作。我想到的是使用<code>也可以

private Either<String,String> processQuery(String[] args){
    //code logic
}

private void reply(String[] args){
    //code logic
    var either = processQuery(args);
    return either.fold((l){
       //returned result is answer

    },(r){
       //returned result is response

    });
}

如果它向左返回,那么它就是答案,如果它向右返回,那么它就是响应。但是由于java中没有任何一种类型,所以我尝试传递原子布尔值。

只有使用java stl才能更好地解决这个问题?


共有2个答案

商开济
2023-03-14
匿名用户

您可以使用配对

<代码>对

在这里看到一些例子

如果您的< code >响应实际上表示某种错误,那么更好的方法是抛出某种异常,并保留< code>String的返回值来表示“好的”流。

法烨烨
2023-03-14

一种解决方案是让该方法采用两个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.");
}

可以这样称呼

private void reply(String[] args){
    processQuery(args, (
        reply -> System.out.println("Success!, " + reply)
    ),
    (
        reply -> System.out.println("Fail, " + reply)
    )
    );
}

或者为不同的功能创建变量

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);
}
 类似资料:
  • 我想为android构建一个计算器应用程序,为此我需要一个解析器来转换要求解的字符串表达式。现在Java和Kotlin不支持eval函数,仅仅为了一个操作而导入javascript引擎可能会让我面临各种漏洞。所以我做了自己的计算器解析器。现在它工作得很好,除了crash中的负数外,所有算术运算都工作得很好。我确实知道问题是什么,因为我使用数学符号分隔字符串,但我不能在负值中执行任何操作。 输入:-

  • 我正在编写一个java程序,其中我不想对数组列表元素使用任何循环。下面的Sure程序将在不使用任何循环的情况下将输出从0打印到n,因为ArrayList从AbstractCollection继承了一个带有循环的toString()方法。 现在,如果我使用这个程序,这将给我大约O(n*m)解,这是我不想要的。是否有任何方法可以访问数组列表中的所有元素而不使用任何循环?

  • 假设我有两个数据帧,df1和df2。df1和df2都包含“id”列。我想过滤df1,这样得到的df,df1prime,有 只有在df1中找到的ID 在df2中没有找到所有ID 而不使用任何连接。我该怎么做?返回RDDs而不是DFs会有帮助吗?pyspark和scala响应都受到欢迎。 谢谢! 编辑:我想保留df1中的所有行

  • 问题内容: 我正在解决Programming Pearls,第二版,第1列中的问题。其中一个问题涉及编写一个程序,该程序仅使用大约1 MB的内存将文件内容存储为位数组,每个位代表是否或文件中没有7位数字。由于Java是我最熟悉的语言,因此即使作者似乎已经想到了C和C ++,我还是决定使用它。 由于我是为了解决我正在处理的问题而假装有限的内存,因此我想确保读取文件的过程完全没有缓冲。 在我阅读Jav

  • 问题内容: 我有以下代码: 在发生某些事件之后,我应该停止在的方法中声明的操作,该方法实现。 我怎样才能做到这一点?我无法关闭执行器,只能撤消我的定期任务。我可以用吗?如果可以的话,请告诉我它将如何工作。 问题答案: 使用。该是你的任务的处理。您需要取消此任务,它将不再执行。 实际上,是签名,并将其与参数一起使用将导致当前正在运行的执行线程被调用中断。如果线程在阻塞的可中断调用(例如)中等待,则会

  • 问题内容: 根据反if运动,最好的做法是在我们的代码中不要使用if。谁能告诉我是否有可能摆脱这段代码中的if?(切换也不是一种选择, 重点是删除条件逻辑,而不是用类似的语言构造替换ifs ) (语言:Java或C#) 问题答案: 利用策略模式。 用Java术语: 使用方法如下: