Sau khi đọc tài liệu của String java.lang.Enum.name()
Tôi không chắc tôi hiểu khi nào nên sử dụng name() và khi nào sử dụng toString().Sự khác nhau giữa `Enum.name()` và `Enum.toString()` là gì?
Trả về tên của hằng số enum này, chính xác như được khai báo trong khai báo enum của nó. Hầu hết các lập trình viên nên sử dụng phương thức toString ưu tiên cho phương thức này, vì phương thức toString có thể trả về một tên thân thiện với người dùng hơn. Phương pháp này được thiết kế chủ yếu để sử dụng trong các tình huống chuyên biệt mà tính chính xác phụ thuộc vào việc lấy tên chính xác, mà sẽ không thay đổi từ bản phát hành sang bản phát hành.
Đặc biệt, mặc dù các tài liệu nói đến thích toString()
, riêng StandardLocation liệt kê Java sử dụng name
khi tôi đã có thể nghĩ tài liệu gợi ý khác.
public String getName() { return name(); }
Hơn nữa Enum
cụ toString()
như,
public String toString() {
return name;
}
và tôi không thể nghĩ ra một tình huống mà một người sử dụng định nghĩa liệt kê sẽ ghi đè lên toString()
nên name()
và toString()
là hầu như luôn luôn giống hệt nhau.
- Bạn có thể giải thích tại sao bỏ qua tài liệu và luôn sử dụng
name()
là một ý tưởng tồi? - Điều gì về cụm từ "sẽ không thay đổi từ bản phát hành sang bản phát hành". Nếu tên sẽ không thay đổi, nó có ngụ ý rằng
java.lang.Enum.toString()
sẽ không?
Theo mặc định, '.toString()' của một enum là '.name()' của nó. Tuy nhiên, bạn có thể ghi đè '.toString()', không phải '.name()'. – fge