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 710c582

Browse files
Update 用好Java中的枚举真的没有那么简单.md
1 parent 226600c commit 710c582

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

‎docs/java/basis/用好Java中的枚举真的没有那么简单.md‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,16 @@ public class Pizza {
6565
首先,让我们看一下以下代码段中的运行时安全性,其中 `==` 运算符用于比较状态,并且如果两个值均为null 都不会引发 NullPointerException。相反,如果使用equals方法,将抛出 NullPointerException:
6666

6767
```java
68-
if(testPz.getStatus().equals(Pizza.PizzaStatus.DELIVERED));
69-
if(testPz.getStatus() == Pizza.PizzaStatus.DELIVERED);
68+
Pizza.PizzaStatus pizza = null;
69+
System.out.println(pizza.equals(Pizza.PizzaStatus.DELIVERED));//空指针异常
70+
System.out.println(pizza == Pizza.PizzaStatus.DELIVERED);//正常运行
7071
```
7172

72-
对于编译时安全性,我们看另一个示例,两个不同枚举类型进行比较,使用equal方法比较结果确定为true,因为`getStatus`方法的枚举值与另一个类型枚举值一致,但逻辑上应该为false。这个问题可以使用==操作符避免。因为编译器会表示类型不兼容错误:
73+
对于编译时安全性,我们看另一个示例,两个不同枚举类型进行比较:
7374

7475
```java
75-
if(testPz.getStatus().equals(TestColor.GREEN));
76-
if(testPz.getStatus() == TestColor.GREEN);
76+
if (Pizza.PizzaStatus.DELIVERED.equals(TestColor.GREEN));// 编译正常
77+
if (Pizza.PizzaStatus.DELIVERED == TestColor.GREEN);// 编译失败,类型不匹配
7778
```
7879

7980
## 4.在 switch 语句中使用枚举类型

0 commit comments

Comments
(0)

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