Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9165696

Browse files
committed
优化"比较java枚举成员使用equal还是=="
1 parent fc646ed commit 9165696

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

‎contents/comparing-java-enum-members-or-equals.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## 比较java枚举成员使用equal还是==
22

33
### 问题
4-
我知道Java枚举会被编译成私有构造参数和一堆静态方法的一个类,当去比较两个枚举的时候,总是使用equals()方法,例如:
4+
我知道Java枚举会被编译成一个包含私有构造参数和一堆静态方法的类,当去比较两个枚举的时候,总是使用equals()方法,例如:
55
```java
66
public useEnums(SomeEnum a)
77
{
@@ -23,12 +23,12 @@ public useEnums2(SomeEnum a)
2323
...
2424
}
2525
```
26-
我已经Java编程5年以上了,并且我想我也懂得 == 和 equals() 之间的区别,但是我仍然觉得困扰在这个问题上,哪一个操作符才是我该使用的。
26+
我有5年以上的java编程经验,并且我想我也懂得 == 和 equals() 之间的区别,但是我仍然觉得很困惑,哪一个操作符才是我该使用的。
2727

2828
### 答案
2929

3030
二者皆对,如果你看过枚举的源码,你会发现在源码中,equals也仅仅非常简单的 == 。
31-
我使用 == ,无论如何,这个左值是可以为 null的
31+
我使用 == ,因为无论如何,这个左值是可以为 null的
3232

3333

3434
译者补充 java.lang.Enum 中Equals 代码:
@@ -40,8 +40,8 @@ public final boolean equals(Object other) {
4040

4141

4242
### 额外答案
43-
#### 能使用 == 在枚举判断中?
44-
答案是肯定的,因为枚举有着严格的实例化控制,所以你可以用 == 去比较实力,这在语言标准内也是有保证的
43+
#### 能在枚举中使用 == 进行判断?
44+
答案是肯定的,因为枚举有着严格的实例化控制,所以你可以用 == 去做比较符,这个用法,在官方文档中也有明确的说明
4545

4646
>JLS 8.9 Enums
4747
>An enum type has no instances other than those defined by its enum constants.
@@ -80,4 +80,6 @@ Bloch specifically mentions that immutable classes that have proper control over
8080
1. 能正常工作
8181
2. 更快
8282
3. 运行时是安全的
83-
4. 编译期也是安全的
83+
4. 编译期也是安全的
84+
85+
stackoverlfow链接:http://stackoverflow.com/questions/1750435/comparing-java-enum-members-or-equals

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /