优化这段代码 BundleTagNodeFetchStrategyEnum fetchStrategyEnum = EnumUtils.getEnum(BundleTagNodeFetchStrategyEnum.values(), appNodeQueryReqDto.getFetchStrategyEnum()); if (fetchStrategyEnum == null) { fetchStrategyEnum = BundleTagNodeFetchStrategyEnum.VERSION_IN_PROJECT; }
时间: 2024-03-09 08:46:27 浏览: 16
除了使用 `EnumUtils.getEnumOrDefault()` 方法、`Optional` 类和 `Stream` 之外,还可以使用 Java 12 中的 `Switch` 表达式对代码进行优化。优化后的代码如下:
```java
BundleTagNodeFetchStrategyEnum fetchStrategyEnum = switch (appNodeQueryReqDto.getFetchStrategyEnum()) {
case "VALUE_1" -> BundleTagNodeFetchStrategyEnum.VALUE_1;
case "VALUE_2" -> BundleTagNodeFetchStrategyEnum.VALUE_2;
case "VALUE_3" -> BundleTagNodeFetchStrategyEnum.VALUE_3;
default -> BundleTagNodeFetchStrategyEnum.VERSION_IN_PROJECT;
};
```
这里使用了 `Switch` 表达式来匹配输入的字符串并返回对应的枚举值,如果没有匹配项则返回默认枚举值。这样可以消除 `if` 语句和 `EnumUtils` 工具类的依赖,使代码更加简洁和易读。需要注意的是,`Switch` 表达式在 Java 12 中是一个预览特性,需要在编译时添加 `--enable-preview` 参数才能使用。
相关问题
用java语言编写程序,计算e=1+1/1!+2/2!+...+n/n!
使用Java语言编写程序计算e的近似值可以根据提供的代码示例进行实现。根据引用[2]中给出的代码示例,可以编写一个ENum类来计算e的近似值。具体步骤如下:
1. 创建一个名为ENum的Java类。
2. 在ENum类中创建一个名为getENum的方法,该方法接受一个整数参数num,代表计算e的近似值的项数。
3. 在getENum方法中,初始化sum的值为1.0,并创建一个整数变量a并初始化为1。
4. 使用for循环从1到num来计算每一项的值。在循环中,更新sum的值为1/a,并更新a的值为(i+1)*a。
5. 在循环结束后,返回sum作为e的近似值。
以下是经过修改后的代码示例:
```java
public class ENum {
public static void main(String[] args) {
ENum eNum = new ENum();
double result = eNum.getENum(3);
System.out.println(result);
}
public double getENum(int num) {
double sum = 1.0;
int a = 1;
for (int i = 1; i <= num; i++) {
sum = sum * (1.0 / a);
a = (i + 1) * a;
}
return sum;
}
}
```
你可以将上述代码复制到一个名为ENum.java的文件中,并通过运行该文件来获取e的近似值。运行结果将会被打印在控制台上。
EnumUtils 获取指定属性的指定值
如果您想要获取枚举类型中某个指定属性的指定值所对应的枚举实例,可以使用 EnumUtils.getEnum 方法结合反射来实现。具体来说,可以先使用 EnumUtils.getEnumList 方法获取该枚举类型的所有实例列表,然后遍历列表并使用反射获取对应属性的值,如果找到匹配的属性值,则返回该枚举实例。示例代码如下:
```java
List<YourEnumType> enumList = EnumUtils.getEnumList(YourEnumType.class);
for (YourEnumType enumInstance : enumList) {
try {
Field field = enumInstance.getClass().getDeclaredField("yourProperty");
field.setAccessible(true);
Object value = field.get(enumInstance);
if (value.equals("YourPropertyValue")) {
return enumInstance;
}
} catch (Exception e) {
// handle exception
}
}
```
其中,YourEnumType 是你定义的枚举类型,"yourProperty" 是要获取的属性名,"YourPropertyValue" 是要匹配的属性值。如果找到匹配的实例,则返回该枚举实例。需要注意的是,由于使用了反射,该方法可能会影响性能,并且可能会抛出异常,需要进行异常处理。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)