如果仅在一侧枚举,则使用 == 进行比较

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 加载程序中,每个枚举可以有一个 单个 实例。这意味着,每个枚举值只能有一个 单个 实例。这些值不能由其他一些机制创建。这就是为什么如果有两个变量表示相同的枚举值,它必须 是相同的 实例。这就是为什么 == 的简单比较就足够了。