通过枚举值获取枚举的对象
时间: 2023-08-06 15:08:51 浏览: 53
要通过枚举值获取枚举的对象,你可以使用枚举类型的`valueOf`方法。这个方法接受一个字符串参数,表示要获取的枚举值。以下是一个示例代码:
```java
enum Fruit {
APPLE,
BANANA,
ORANGE
}
public class Main {
public static void main(String[] args) {
String fruitName = "APPLE";
Fruit fruit = Fruit.valueOf(fruitName);
System.out.println(fruit); // 输出:APPLE
}
}
```
在这个示例中,通过调用`Fruit.valueOf("APPLE")`方法,我们可以获取到枚举类型`Fruit`中名称为"APPLE"的枚举对象。注意,`valueOf`方法是区分大小写的,所以要确保传入的字符串与枚举值的名称完全匹配。
如果传入的字符串与任何一个枚举值的名称都不匹配,`valueOf`方法会抛出`IllegalArgumentException`异常。因此,在使用`valueOf`方法时,建议使用`try-catch`块来捕获异常并进行处理。
相关问题
java根据枚举值获取枚举内容
根据提供的两个引用,可以看出这是在Java中使用枚举类型的两种不同方法来获取枚举内容。下面是两种方法的详细解释和示例代码:
1.使用EnumUtil.getEnumObject()方法获取枚举内容
这种方法需要使用一个名为EnumUtil的工具类,该类提供了一个getEnumObject()方法,该方法接受两个参数:枚举类型和一个Lambda表达式,该表达式用于比较枚举类型中的某个属性是否与提供的值相等。如果找到匹配的枚举,则返回该枚举对象,否则返回null。
```java
Optional m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getCode().equals(code));
```
其中,PurchaseDemandEnum是枚举类型的名称,getCode()是枚举类型中的一个方法,用于获取枚举类型中的code属性的值,code是枚举类型中的一个属性,表示枚举类型的值。Lambda表达式e -> e.getCode().equals(code)用于比较枚举类型中的code属性是否与提供的code值相等。
2.使用枚举类型中的方法获取枚举内容
这种方法需要在枚举类型中定义一个方法,该方法接受一个参数,用于比较枚举类型中的某个属性是否与提供的值相等。如果找到匹配的枚举,则返回该枚举对象,否则返回null。
```java
Integer codeByName = PurchaseDemandEnum.getCodeByName(name);
```
其中,PurchaseDemandEnum是枚举类型的名称,getCodeByName()是枚举类型中的一个方法,用于获取枚举类型中的name属性的值,name是枚举类型中的一个属性,表示枚举类型的名称。
SerializedProperty 获取指定枚举值
要获取指定枚举值的SerializedProperty,您可以使用SerializedObject的FindProperty方法。在您的自定义Inspector窗口中,首先创建一个SerializedObject对象,然后使用FindProperty方法来获取指定枚举值的SerializedProperty。
例如,假设您有一个名为"color"的枚举属性,您可以按照以下步骤获取它的SerializedProperty:
1. 在OnEnable方法中,创建一个SerializedObject对象并将其设置为当前的目标对象:
```csharp
SerializedObject serializedObject = new SerializedObject(target);
```
2. 使用FindProperty方法获取指定枚举值的SerializedProperty:
```csharp
SerializedProperty colorProperty = serializedObject.FindProperty("color");
```
现在,您可以使用colorProperty来访问和修改该枚举值的SerializedProperty。
请注意,"color"应该是您要获取的枚举属性的名称,确保与您的代码中的实际属性名称匹配。
引用:
\[2\]
#### 引用[.reference_title]
- *1* *3* [Unity3d 周分享(20期 2019.6.30 )](https://blog.csdn.net/u010019717/article/details/94318215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Unity自定义Inspector窗口——根据枚举类型显示指定内容](https://blog.csdn.net/qq_20834273/article/details/52252640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]