java枚举类型enum用法
时间: 2023-08-30 08:09:55 浏览: 56
Java枚举类型(enum)是一种特殊的类,它表示一组常量,可以用于定义一组相关的常量,例如一周的天数、月份、颜色等等。
使用枚举类型可以提高代码的可读性和可维护性,因为它可以将常量集中管理,避免了在代码中出现大量的魔法数字。
下面是Java枚举类型的使用方法:
1. 定义枚举类型:
```
enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
```
2. 使用枚举类型:
```
Weekday day = Weekday.MONDAY;
System.out.println(day); // 输出 MONDAY
```
枚举类型可以作为方法参数或返回值,例如:
```
public enum Gender {
MALE, FEMALE;
public static Gender fromString(String s) {
if (s.equalsIgnoreCase("male")) {
return MALE;
} else if (s.equalsIgnoreCase("female")) {
return FEMALE;
} else {
throw new IllegalArgumentException("Invalid gender: " + s);
}
}
}
public class Person {
private String name;
private Gender gender;
public Person(String name, Gender gender) {
this.name = name;
this.gender = gender;
}
public String getName() {
return name;
}
public Gender getGender() {
return gender;
}
}
// 使用枚举类型作为方法参数和返回值
public static void main(String[] args) {
Person p1 = new Person("Tom", Gender.MALE);
Person p2 = new Person("Mary", Gender.FEMALE);
System.out.println(p1.getName() + " is " + p1.getGender()); // 输出 Tom is MALE
System.out.println(p2.getName() + " is " + p2.getGender()); // 输出 Mary is FEMALE
Gender gender = Gender.fromString("male");
System.out.println("Gender from string: " + gender); // 输出 Gender from string: MALE
}
```
枚举类型还可以定义构造方法、实例方法、静态方法和成员变量,例如:
```
enum Color {
RED("FF0000"), GREEN("00FF00"), BLUE("0000FF");
private String code;
private Color(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static Color fromCode(String code) {
for (Color c : values()) {
if (c.code.equalsIgnoreCase(code)) {
return c;
}
}
throw new IllegalArgumentException("Invalid color code: " + code);
}
}
public static void main(String[] args) {
Color c1 = Color.RED;
Color c2 = Color.fromCode("00FF00");
System.out.println(c1.getCode()); // 输出 FF0000
System.out.println(c2.name()); // 输出 GREEN
}
```
总之,Java枚举类型是一种强大的语言特性,它可以用于定义一组相关的常量,并提供了丰富的方法来操作这些常量。在实际开发中,我们应该尽可能地使用枚举类型来管理常量,以提高代码的可读性和可维护性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)