Я случайно оставил дополнительную запятую в конце одного из моих аннотационных списков, но он скомпилирован на моей машине. Например:Являются ли аннотационные списки java допустимыми для дополнительной запятой после последней записи?
@NamedQueries({ @NamedQuery(name="name1",query="FROM Foo"), @NamedQuery(name="name2",query="FROM Bar"), })
Обратите внимание на дополнительные запятую после второго @NamedQuery. Кажется, он компилируется на моей машине, но у кого-то были проблемы с компиляцией кода на их машине, поэтому я удалил его. Но теперь мне любопытно, разрешено ли это, и если да, то какая версия java позволяет это.
Я не мог найти ссылку на это в любом месте в Интернете.
> После последнего выражения в инициализаторе массива может появляться конечная запятая и игнорируется. (+1) – Tim
Спецификация языка Java явно разрешает конечную запятую в массивах аннотаций (http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.7). Однако, похоже, в javac есть ошибка, которая вызывает ошибку («незаконный запуск выражения»). Чтобы быть в безопасности, вы не должны использовать концевые запятые в аннотации, в то время как они вполне подходят в инициализаторах массива. –