Tự định nghĩa enum trong java

Giả sử chúng ta tạo ra một class Person trong đó có thuộc tính gender có giá trị là nam, nữ, khác. Loay hoay một hồi không biết là gender trong class Person có type là gì đây ta!

À ha, gender là số nguyên, với giá trị 1 là nam, -1 là nữ, 0 là khác!

Nhìn vào class Person có vẽ khá rõ nghĩa. Giả sử mình là một dev mới vào, được giao nhiệm vụ implement một class mới tên là Statistic trong đó có hàm checkAndShowGender(Person person), hàm này sẽ nhận Person và kiểm tra in ra màn hình giới tính của person truyền vào. Và mình chưa hề đụng đến class Person.

À ha, tại sao gender lại là số nguyên? rồi giá trị 1 ứng với gì? Lúc này các bạn phải đi thẳng vào class Person mà coi thôi. Rõ ràng, nếu làm như vậy thì sẽ khiến cho code trở nên khó đọc hơn rất nhiều phải không!

Vậy thì java đã giải quyết vấn đề trên với enum cho phép chúng ra định nghĩa một tập tập các hằng số. Mỗi hằng số này sẽ đại diện cho một giá trị nhất định. Điểm tuyệt vời ở đây là những hằng số có tên rõ ràng, đọc vào là hiểu ngay ý nghĩa của nó.

Để định nghĩa một enum trong java chúng ta làm như sau:

Gán giá trị cho enum

Chúng ta sẽ có class Person được viết lại như sau

Để gán giá trị cho enum type chúng ta làm như sau:

So sánh enum trong java

Để so sánh enum trong java chúng ta dùng toán tử ‘==’ để so sánh

Hoặc dùng equals()

Note: Khi sử dụng equals() có một điểm lưu ý, nếu giá trị enum chứa trong object là null thì chúng ta sẽ nhận NullpointerException đó nhé. 

Output: Exception in thread “main” java.lang.NullPointerException

Để tránh trường hợp trên, chúng ta chỉ cần đổi vị trí so sánh cho nhau. Gía trị enum trong object nằm trong equals().

Output: ko

Enum với Switch-Case

Theo cá nhân mình thấy kiểu như thằng enum này xin ra để dùng chung với Switch case các bạn ạ. Chúng ta sẽ đi đến ví dụ luôn. Mình sẽ tay if else ở trên bằng Switch case. Trong code bên dưới có vẽ dễ chịu hơn code ở trên của mình!

Enum Instance field

Output:

O

M

Với mỗi hằng số trong enum chúng ta có thể định nghĩa được giá trị riêng của nó. Khi chúng ta thực hiện Gender gender1 = Gender.OHTER, lúc đó chương trình sẽ thực thi constructor của Gender enum và gán giá trị cho shortCode.

Note

Khi định nghĩa một enum, các hằng số phải được đặt đầu tiên.

Khi Enum có thêm instance filed và method, các hằng số phải kết thúc bằng dấu “;”. 

 

‹Previous Next›

 

Leave a Reply

Your email address will not be published. Required fields are marked *