getAnnotations () пусто и не работает должным образом - PullRequest
0 голосов
/ 17 мая 2018

Я ожидаю этот код:

import java.util.Arrays;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@interface Sometation {}


public class Test {
    @Sometation
    public static void main(String[] args) {
     System.out.println(Arrays.toString(Test.class.getAnnotations()));
     System.out.println(Arrays.toString(Test.class.getDeclaredAnnotations()));
    }

}

для получения хотя бы одного непустого массива. Вместо этого получается

[]
[]

Это происходит в затмении, и когда я запускаю его в терминале. Я использую 'java-8-openjdk-amd64' (устанавливается apt в UbuntuMATE 16.04).

1 Ответ

0 голосов
/ 17 мая 2018

Вы аннотировали метод main() , а не класс Test. Класс Test не имеет аннотаций. Чтобы увидеть добавленную вами аннотацию, сначала нужно получить метод, а затем использовать Method # getDeclaredAnnotations () . Что-то вроде (не проверено):

Test.class.getMethod("main", String[].class).getDeclaredAnnotations()

Кроме того, вы можете поместить аннотацию в класс:

@Sometation
public class Test { ... }

и тогда ваш исходный код должен отображать несколько непустых массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...