如果仅在一侧枚举,则使用 == 进行比较
Use == for comparison if enum only on one side
如果将枚举常量与其他内容进行比较,是否可以使用 ==
代替 equals
方法?
示例(User
实现接口 IUser
):
IUser peter = User.PETER;
if (User.PETER == peter) {
// do something
}
在您的代码中,我们假设您的枚举 User 实现了接口 IUser。否则代码 IUser peter = User.PETER; 将编译。
是的,很安全。因为在 class 加载程序中,每个枚举可以有一个 单个 实例。这意味着,每个枚举值只能有一个 单个 实例。这些值不能由其他一些机制创建。这就是为什么如果有两个变量表示相同的枚举值,它必须 是相同的 实例。这就是为什么 == 的简单比较就足够了。
如果将枚举常量与其他内容进行比较,是否可以使用 ==
代替 equals
方法?
示例(User
实现接口 IUser
):
IUser peter = User.PETER;
if (User.PETER == peter) {
// do something
}
在您的代码中,我们假设您的枚举 User 实现了接口 IUser。否则代码 IUser peter = User.PETER; 将编译。
是的,很安全。因为在 class 加载程序中,每个枚举可以有一个 单个 实例。这意味着,每个枚举值只能有一个 单个 实例。这些值不能由其他一些机制创建。这就是为什么如果有两个变量表示相同的枚举值,它必须 是相同的 实例。这就是为什么 == 的简单比较就足够了。