Nếu tôi khai báo một biến trước hoặc không khai báo hằng enum theo cách này:Tại sao các hằng số enum phải được khai báo trước bất kỳ biến nào khác và khai báo phương thức trong một kiểu enum?
enum MyEnum
{
int i = 90;
}
Nó cho thấy sau lỗi biên dịch.
MyEnum.java:3: <identifier> expected
{
^
MyEnum.java:4: ',', '}', or ';' expected
int i = 90;
^
MyEnum.java:4: '}' expected
int i = 90;
^
MyEnum.java:5: class, interface, or enum expected
}
^
4 errors
Nhưng nếu tôi khai báo hằng số enum trước khi khai báo i
thì nó sẽ biên dịch tốt.
Ngay cả những đoạn mã sau sẽ biên dịch tốt:
enum MyEnum
{
;//put a semicolon
int i = 90;
}
Tại sao java enum được thiết kế theo cách này?
Đầu tiên và quan trọng nhất, 'enum' được thiết kế để trở thành * liệt kê * nhiều hơn 0 phần tử. Thiết kế này hoàn toàn hợp lệ. –
Vì bắt buộc phải có ít nhất một hằng số enum. Vì đó là cách cú pháp được định nghĩa trong Đặc tả Ngôn ngữ Java. Bởi vì. – EJP
@EJP Nhưng trong trường hợp sau này tôi đã không tuyên bố bất kỳ hằng số enum nhưng chỉ đơn giản là nối thêm một dấu chấm phẩy trước khi tuyên bố một biến. Không phải là nó đi ngược lại nhiệm vụ mà một 'Enum' nên có ít nhất một hằng số enum? –