小编Kis*_*ran的帖子

orElse的Java可选工作与其他情况不同

在Optional中,当调用optional.orElse方法时,无论是否存在元素,orElse部分是否被执行,它都不会表现为if else条件。

在下面的代码中,如果您在案例1中看到,则getNullPoJo和getDefaultPoJo都将执行,因为getNullPoJo将返回空

情况2中,您将从加载的值(从getLoadedPoJo)获得一个Optional并执行getDefaultPoJo

我只是想了解optional.orElse的工作方式。

public static void main (String [] a) {
    PoJo poJo1=getNullPoJo().orElse(getDefaultPoJo());//Case 1
    System.out.println("pojo1 Got "+poJo1.getVariable());
    PoJo poJo2=getLoadedPoJo().orElse(getDefaultPoJo());//Case 2
    System.out.println("pojo2 Got "+poJo2.getVariable());
}

private static Optional<PoJo> getNullPoJo() {
    System.out.println("Executing getNullPoJo");
    Optional<PoJo> optional=Optional.empty();
    return optional;
}

private static Optional<PoJo> getLoadedPoJo() {
    System.out.println("Executing getLoadedPoJo");
    PoJo poJo =new PoJo();
    poJo.setVariable("Loaded");
    Optional<PoJo> optional=Optional.of(poJo);
    return optional;
}

private static PoJo getDefaultPoJo() {
    System.out.println("Executing getDefaultPoJo");
    PoJo poJo =new PoJo();
    poJo.setVariable("Default");
    return poJo;
}
Run Code Online (Sandbox Code Playgroud)

当前输出为:

执行getNullPoJo

执行getDefaultPoJo

pojo1默认

执行getLoadedPoJo

执行getDefaultPoJo …

java

17
推荐指数
3
解决办法
1385
查看次数

在条件下使用Optional的更好方法是什么?

我已经编写了代码,但事实是,我认为可以有更好的方法来编写以下代码,

这仅在Java 8中必须可行

private User getUser(String userId) {
    Optional<User> optionalUser = userDAO.getUserById(userId);
    if(optionalUser.isPresent())
        return optionalUser.get();
    throw new UserDefinedException("User not present");
}
Run Code Online (Sandbox Code Playgroud)

我希望将以上内容写成一行

java java-8

10
推荐指数
1
解决办法
775
查看次数

如何在expect中转义方括号?

我无法在期望脚本中转义方括号,示例如下,

我有一个 Question.sh 脚本,如下所示,

#!/bin/bash
echo "Would you like to specify inputs and execute the script? [Y/n]"
read $REPLY

echo "Deleted Item with ID: 50 and do cleanup? [Y/n]"
read $REPLY

echo "Deleted Item with ID: 51 and do cleanup? [Y/n]"
read $REPLY

echo "Deleted Item with ID: 52 and do cleanup? [Y/n]"
read $REPLY
Run Code Online (Sandbox Code Playgroud)

对于上面的问题.sh,我有下面的answer.exp,并使用“expect answer.exp 51”命令执行相同的操作,

#!/usr/bin/expect -f

set timeout -1

spawn ./question.sh

set item "Deleted Item with ID: "
append item [lindex $argv 0]
append …
Run Code Online (Sandbox Code Playgroud)

bash tcl expect

3
推荐指数
1
解决办法
3348
查看次数

标签 统计

java ×2

bash ×1

expect ×1

java-8 ×1

tcl ×1