2009-07-13 22 views
7

Tôi vô tình để lại dấu phẩy thừa ở cuối một trong các danh sách chú thích của tôi, nhưng nó được biên dịch tốt trên máy của tôi. Ví dụ:Danh sách chú thích java có cho phép thêm dấu phẩy sau lần nhập cuối cùng không?

@NamedQueries({ @NamedQuery(name="name1",query="FROM Foo"), @NamedQuery(name="name2",query="FROM Bar"), })

Chú ý các dấu phẩy sau @NamedQuery thứ hai. Dường như biên dịch tốt trên máy tính của tôi, nhưng ai đó đã gặp sự cố khi biên dịch mã trên máy của họ, vì vậy tôi đã xóa nó. Nhưng bây giờ tôi tò mò muốn biết liệu nó có được cho phép hay không, và nếu có, phiên bản java nào sẽ cho phép nó.

Tôi chưa thể tìm thấy bất kỳ tham chiếu nào đến bất kỳ nơi nào trực tuyến này.

Trả lời

6

Tôi nghĩ trong trường hợp này, bạn đang xử lý Array Initializers cho phép thêm dấu phẩy.

Ví dụ:

int[] foo = new int[] { 1, 2, 3, };

này đã là một phần của JLS ngay từ đầu.

+0

> Dấu phẩy sau có thể xuất hiện sau biểu thức cuối cùng trong bộ khởi tạo mảng và bị bỏ qua. (+1) – Tim

+2

Đặc tả ngôn ngữ Java cho phép rõ ràng dấu phẩy ở các mảng chú thích (http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.7). Tuy nhiên có vẻ là một lỗi trong javac mà ném một lỗi ("bắt đầu bất hợp pháp của biểu thức"). Vì vậy, để được ở bên an toàn, bạn không nên sử dụng dấu phẩy trong các chú thích, trong khi chúng khá ổn trong các bộ khởi tạo mảng. –

4

Lưu ý rằng thao tác này sẽ hoạt động trong một số bối cảnh xử lý chú thích chứ không phải trong các ngữ cảnh khác. Nếu bạn đang sử dụng APT dòng lệnh của Sun, nó sẽ gây ra một lỗi khó chịu. (Tuy nhiên, nó hoạt động tốt trong nhật thực)

Các vấn đề liên quan