第十三章 枚举类型与泛型


Java中的枚举是一种特殊的类,它用于定义一组有限的常量。
枚举在Java中被视为数据类型,你可以使用它们来创建枚举类型的变量,然后使用那些变量等。

枚举类使用enum关键字进行定义。

例如:在这个例子中,我们定义了一个名为Day的枚举类,它包含了一周的七天作为常量。

public enum Day {  
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,   
    THURSDAY, FRIDAY, SATURDAY   
}

定义枚举类时,需要遵循以下规则:

枚举类中只能包含常量和方法,以及构造函数。
枚举常量必须是public static final类型,每个常量的名称必须唯一。
枚举类中可以定义构造函数和方法,但这些方法只能访问枚举常量和实例变量。
枚举常量按照它们的声明顺序在枚举类中进行排序。
枚举类不能继承其他类或实现接口。
枚举常量的名称必须是唯一的,不能重复。
枚举类的构造函数只能有一个,且必须为private类型。
枚举类中不能使用继承和多态等特性。
使用
枚举类型在实际中主要用于以下几个方面:

定义有限个特定的值:枚举可以用来定义一组有限的特定的值,例如一周的天数,或者颜色等。这些值在程序运行期间是不会改变的。
作为方法的参数:枚举可以作为方法的参数,这样可以让代码更加清晰,易于阅读和维护。例如,你可以定义一个枚举类型来表示不同的排序方式,然后在方法中使用这个枚举作为参数。
作为返回类型和参数类型:枚举可以作为方法的返回类型和参数类型。例如,你可以定义一个方法来获取一个枚举类型的列表,或者传递一个枚举类型的对象作为参数。
例如:在这个例子中,我们定义了一个枚举SortType来表示不同的排序方式。
这个枚举有两个值:ASC和DESC,分别表示升序和降序。我们还为每个值提供了一个字符串描述。

public enum SortType {  
    ASC("升序"), DESC("降序");  
  
    private String value;  
  
    SortType(String value) {  
        this.value = value;  
    }  
  
    public String getValue() {  
        return value;  
    }  


然后我们可以像下面这样使用这个枚举:

SortType type = SortType.ASC; // 使用 SortType 作为变量类型  
System.out.println(type.getValue()); // 输出 "升序"


或者在方法中使用:

public void sortData(SortType type) {  
    // 根据 type 进行排序  
    // ...  
}  
// 调用方法时使用枚举作为参数  
sortData(SortType.ASC);

优缺点
优点:

安全:使用枚举可以防止错误地使用无效的值。如果一个方法只接受有限个特定的值作为参数,那么使用枚举可以确保传入的参数是有效的。如果试图传入一个无效的值,编译器将会报错。
可读性和可维护性:使用枚举可以使代码更加清晰和易于阅读。每个枚举值都可以有一个有意义的名称,而不是一个难以理解的数字或者字符串。同时,如果需要添加新的枚举值,只需要在枚举类中添加新的实例,而不需要修改现有的代码。
性能:使用枚举可以提高性能。因为枚举值是静态的,所以它们可以在编译期间被解析和优化。相比之下,如果使用一个字符串或者整数来表示相同的信息,那么这些值需要在运行时解析和比较。
缺点:

占用空间:每个枚举值都会在内存中占用一定的空间。虽然这可能不会对单个程序造成太大的影响,但是如果在一个大型的项目中使用大量的枚举值,那么这可能会成为一个问题。
可能产生过度设计:如果过度使用枚举,可能会导致代码变得过于复杂和难以维护。例如,如果在一个方法中使用一个包含大量枚举值的列表,那么这可能会使代码变得难以理解和维护。

方法
枚举类存在的方法,具体详见JavaApi文档1.8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值