java中的if else 的替换写法,除了switch 语句
时间: 2023-10-28 16:05:54 浏览: 57
除了使用`switch`语句,Java中还可以使用`if else`的替代写法是使用`Map`。具体做法是将不同条件下的代码块封装成为不同的`Runnable`对象,将这些`Runnable`对象以`key-value`的形式存储在`Map`中,然后根据条件从`Map`中获取对应的`Runnable`对象并执行即可。
示例如下:
```java
Map<Boolean, Runnable> map = new HashMap<>();
map.put(true, () -> {
// 如果条件为true,执行这里的代码块
});
map.put(false, () -> {
// 如果条件为false,执行这里的代码块
});
boolean condition = true; // 假设这是一个if else语句中的条件表达式
map.get(condition).run(); // 根据条件获取对应的Runnable对象并执行
```
需要注意的是,这种替代写法只适用于`if else`语句中的两个分支,如果有多个分支,那么使用`Map`的写法就过于繁琐了,此时还是应该使用`if else`或`switch`语句。
相关问题
ifelse的替换写法
在很多编程语言中,ifelse可以用三目运算符(ternary operator)进行替换,例如在Python中:
```
value = x if condition else y
```
这行代码的意思是:如果condition为True,那么value的值为x,否则value的值为y。
另外,在许多编程语言中,还可以使用switch语句来替换ifelse,例如在Java中:
```
switch (variable) {
case value1:
// code block
break;
case value2:
// code block
break;
default:
// code block
}
```
这个语句的意思是:如果variable的值等于value1,执行第一个代码块;如果variable的值等于value2,执行第二个代码块;否则执行default代码块。
mybatis xml mapper 文件中 if-else 写法
在 MyBatis 的 XML Mapper 文件中,可以使用 `<if>`、`<choose>`、`<when>` 和 `<otherwise>` 标签来实现条件判断和分支控制。
1. `<if>` 标签:
`<if>` 标签用于指定一个条件,只有当条件为真时,才会执行其中的 SQL 语句。
示例:
```xml
<select id="selectUsers" resultType="User">
SELECT * FROM users
WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
<if test="username != null">
AND username = #{username}
</if>
</select>
```
2. `<choose>`、`<when>` 和 `<otherwise>` 标签:
`<choose>` 标签相当于 Java 中的 switch 语句,用于从多个选项中选择一个,每个选项都是由 `<when>` 标签表示的条件分支。如果所有选项都不符合条件,则可以使用 `<otherwise>` 标签来提供默认选项。
示例:
```xml
<select id="selectUsers" resultType="User">
SELECT * FROM users
<choose>
<when test="id != null">
WHERE id = #{id}
</when>
<when test="username != null">
WHERE username = #{username}
</when>
<otherwise>
WHERE 1=1
</otherwise>
</choose>
</select>
```
注意:在 `<if>`、`<when>` 和 `<otherwise>` 标签中,可以使用 MyBatis 的 OGNL 表达式来进行条件判断。例如,`test="id != null"` 表示判断 id 是否为 null。