Tiếng Việt - Java - Chuỗi Enum
Xin chào các bạn, các nhà lập trình Java mới nhảy! Hôm nay, chúng ta sẽ đi một chuyến du lịch hấp dẫn vào thế giới Chuỗi Enum trong Java. Đừng lo lắng nếu bạn là mới bắt đầu với lập trình – tôi sẽ hướng dẫn bạn từng bước, như cách tôi đã làm cho nhiều học viên khác trong những năm dạy học. Hãy cùng nhau bắt đầu chuyến phiêu lưu thú vị này!
Enum là gì?
Trước khi bước vào Chuỗi Enum, hãy bắt đầu với những khái niệm cơ bản. Enum, viết tắt của "enumerations" (liệt kê), là một loại đặc biệt trong Java đại diện cho một tập hợp hằng cố định. Hãy nghĩ về chúng như một danh sách các tùy chọn được xác định trước khi không thay đổi trong quá trình chạy chương trình.
Tưởng tượng bạn đang tạo một chương trình cho một quán cà phê. Bạn có thể có một tập hợp kích thước ly cố định: Nhỏ, Vừa và Lớn. Đây là một tình huống hoàn hảo để sử dụng enum!
Dưới đây là cách chúng ta có thể định nghĩa enum này:
public enum CupSize {
SMALL,
MEDIUM,
LARGE
}
Bây giờ, hãy xem cách chúng ta có thể sử dụng enum này trong mã của mình:
public class CoffeeShop {
public static void main(String[] args) {
CupSize myOrder = CupSize.MEDIUM;
System.out.println("Tôi muốn một ly cà phê " + myOrder + ", xin vui lòng!");
}
}
Khi chạy mã này, nó sẽ đầu ra: "Tôi muốn một ly cà phê MEDIUM, xin vui lòng!"
Chuỗi Enum: Xem xét chi tiết hơn
Bây giờ khi chúng ta hiểu rõ về enum, hãy khám phá Chuỗi Enum. Theo mặc định, khi bạn in một giá trị enum, Java sẽ sử dụng tên của nó như một chuỗi. Nhưng điều gì xảy ra nếu bạn muốn tùy chỉnh cách mà các giá trị enum của bạn được hiển thị dưới dạng chuỗi?
Đây là nơi phương pháp toString()
đến để đó. Hãy cải thiện enum CupSize
của chúng ta để cung cấp các chuỗi mô tả chi tiết hơn:
public enum CupSize {
SMALL("Nhỏ (8 oz)"),
MEDIUM("Vừa (12 oz)"),
LARGE("Lớn (16 oz)");
private final String description;
CupSize(String description) {
this.description = description;
}
@Override
public String toString() {
return this.description;
}
}
Hãy phân tích những gì đang diễn ra ở đây:
- Chúng ta đã thêm một trường
description
vào enum của mình. - Chúng ta đã tạo một constructor nhận mô tả này làm tham số.
- Chúng ta đã ghi đè phương pháp
toString()
để trả về mô tả tùy chỉnh của chúng ta.
Bây giờ, hãy sử dụng enum đã cải thiện của chúng ta:
public class CoffeeShop {
public static void main(String[] args) {
CupSize myOrder = CupSize.MEDIUM;
System.out.println("Tôi muốn một ly cà phê " + myOrder + ", xin vui lòng!");
}
}
Khi chạy mã này lần nữa, nó sẽ đầu ra: "Tôi muốn một ly cà phê Vừa (12 oz), xin vui lòng!"
Có phải thật tuyệt vời không? Chúng ta đã tùy chỉnh cách mà các giá trị enum của chúng ta được hiển thị dưới dạng chuỗi!
Làm việc với Chuỗi Enum
Bây giờ khi chúng ta biết cách tạo các biểu thị chuỗi tùy chỉnh cho enum của mình, hãy khám phá một số thao tác phổ biến bạn có thể thực hiện với Chuỗi Enum.
Chuyển đổi Enum thành Chuỗi
Chúng ta đã đã thấy cách chuyển đổi một enum thành chuỗi bằng cách sử dụng phương pháp toString()
. Nhưng có một cách khác để lấy tên của một enum hằng dưới dạng chuỗi:
CupSize size = CupSize.LARGE;
String sizeName = size.name();
System.out.println("Tên của enum là: " + sizeName);
Điều này sẽ đầu ra: "Tên của enum là: LARGE"
Chuyển đổi Chuỗi thành Enum
Điều gì xảy ra nếu bạn có một chuỗi và muốn chuyển đổi nó trở lại thành một enum? Bạn có thể sử dụng phương pháp valueOf()
:
String sizeString = "SMALL";
CupSize size = CupSize.valueOf(sizeString);
System.out.println("Enum đã chuyển đổi là: " + size);
Điều này sẽ đầu ra: "Enum đã chuyển đổi là: Nhỏ (8 oz)"
Lặp qua các Giá trị Enum
Đôi khi, bạn có thể muốn lặp qua tất cả các giá trị trong một enum. Bạn có thể làm điều này bằng cách sử dụng phương pháp values()
:
System.out.println("Các kích thước ly có sẵn:");
for (CupSize size : CupSize.values()) {
System.out.println("- " + size);
}
Điều này sẽ đầu ra:
Các kích thước ly có sẵn:
- Nhỏ (8 oz)
- Vừa (12 oz)
- Lớn (16 oz)
Ví dụ thực tế: Hệ thống Đặt Hàng Cà Phê
Hãy đặt lại mọi thứ mà chúng ta đã học lại vào một ví dụ tổng quát hơn. Chúng ta sẽ tạo một hệ thống đặt hàng cà phê đơn giản:
import java.util.Scanner;
public enum CoffeeType {
ESPRESSO("Một loại cà phê mạnh được pha bằng cách đẩy nước nóng áp lực qua các hạt cà phê được xay nhỏ."),
LATTE("Espresso với sữa chưng áp và một lớp nhỏ sữa mờ trên."),
CAPPUCCINO("Bằng phần espresso, sữa chưng áp và sữa mờ.");
private final String description;
CoffeeType(String description) {
this.description = description;
}
@Override
public String toString() {
return name() + ": " + this.description;
}
}
public class CoffeeShop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Chào mừng bạn đến quán cà phê của chúng tôi!");
System.out.println("Dưới đây là các loại cà phê có sẵn của chúng tôi:");
for (CoffeeType type : CoffeeType.values()) {
System.out.println("- " + type);
}
System.out.print("Bạn muốn loại cà phê nào? ");
String userChoice = scanner.nextLine().toUpperCase();
try {
CoffeeType chosenCoffee = CoffeeType.valueOf(userChoice);
System.out.println("Lựa chọn tuyệt vời! Bạn đã đặt một " + chosenCoffee.name().toLowerCase() + ".");
} catch (IllegalArgumentException e) {
System.out.println("Xin lỗi, chúng tôi không có loại cà phê đó.");
}
scanner.close();
}
}
Chương trình này làm như sau:
- Chúng ta định nghĩa một
CoffeeType
enum với mô tả cho mỗi loại cà phê. - Trong phương thức
main
, chúng ta hiển thị tất cả các loại cà phê có sẵn cho người dùng. - Chúng ta yêu cầu người dùng chọn một loại cà phê.
- Chúng ta cố gắng chuyển đổi lựa chọn của người dùng thành một
CoffeeType
enum. - Nếu thành công, chúng ta xác nhận đặt hàng của họ. Nếu không, chúng ta thông báo rằng chúng tôi không có loại cà phê đó.
Kết luận
Xin chúc mừng! Bạn vừa đã leo núi vào thế giới của Chuỗi Enum trong Java. Chúng ta đã bắt đầu với những khái niệm cơ bản về enum, cách tùy chỉnh biểu thị chuỗi của chúng và cách làm việc với chúng trong nhiều cách khác nhau. Hãy nhớ rằng enum là một công cụ mạnh mẽ trong Java có thể làm cho mã của bạn dễ đọc hơn và giảm thiểu lỗi khi làm việc với một tập hợp hằng cố định.
Khi tiếp tục hành trình Java của bạn, bạn sẽ tìm thấy nhiều ví dụ sử dụng enum hơn nữa. Chúng rất hữu ích trong các câu lệnh switch, đại diện cho các trạng thái trong máy tính trạng thái hoặc bất cứ đâu bạn có một tập hợp tùy chọn cố định.
Hãy tiếp tục tập luyện, giữ được sự thích thú và hạnh phúc khi lập trình!
Credits: Image by storyset