В настоящее время я работаю над проектом, в котором работаю с пользовательскими аннотациями Java. Я хочу заставить пользователя моей аннотации объявить как минимум final boolean b
внутри списка параметров метода, если он аннотировал метод с помощью @Foo. Так что это должно выглядеть примерно так:
@Foo
public void foo(final boolean b) { }
@Foo
public void bar() { } // This should result in an error
С помощью моего процессора аннотаций я могу получить тип переменной, но не окончательный модификатор. Если я хочу получить набор модификаторов, как показано в приведенном ниже коде, набор всегда будет пустым, хотя последний модификатор присутствует в параметре.
for (VariableElement parameter : method.getParameters()) {
Set<Modifier> modifiers = parameter.getModifiers(); // This set is always empty
}
Любые идеи, почему это так?
final
из всех окончательных параметров. И это разумно, потому чтоfinal
имеет смысл только во время компиляции. - person Andrew Tobilko   schedule 21.06.2017final
таким, чтобы он не мог переназначить значение переменных внутри тела метода. - person michael   schedule 21.06.2017