Mã này không biên dịch như thế nào?Java: làm thế nào đến điều này không biên dịch?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
biên dịch báo cáo:
enum declarations allowed only in static contexts.
Nhưng sau đó khi tôi đặt Enum lớp bên A, mọi thứ đều ổn.
Điều này khá bất ngờ. Tôi không nghĩ rằng tôi có vấn đề này trong C + +.
Một enum là một con thú thực sự tĩnh. Trong ví dụ trên, bạn chỉ muốn có một đối tượng Enum.AD. Nhưng nếu bạn khai báo một enum bên trong một lớp không tĩnh, bạn (theo lý thuyết) cần một cá thể khác nhau của Enum.AD cho mỗi phạm vi động. Điều đó không có ý nghĩa ... do đó nó bị cấm. –