класс javafx.scene.Node имеет пару методов setUserData (Object) и Object getUserData ()
, которые вы могли бы использовать для добавления вашей информации в узел.
So , вы можете вызвать page.setUserData (info);
И контроллер может проверить, задана ли информация. Кроме того, вы можете использовать ObjectProperty для пересылки данных назад, если это необходимо.
Соблюдайте документацию здесь: http://docs.oracle.com/javafx/2/api/javafx/fxml /doc-files/introduction_to_fxml.html Перед фразой «В первой версии handleButtonAction () помечен с помощью @FXML, чтобы разрешить разметку, определенную в документе контроллера, вызвать ее. Во втором примере поле кнопки аннотируется, чтобы позволить загрузчику устанавливать его значение. Метод initialize () аналогично аннотируется. "
Итак, вам нужно связать контроллер с узлом и установить пользовательские данные для узла.
Вы не можете создать экземпляр, но по крайней мере получить значения по умолчанию
Settings.class.getMethod("a").getDefaultValue()
Settings.class.getMethod("b").getDefaultValue()
Settings.class.getMethod("c").getDefaultValue()
И затем, динамический прокси мог использоваться для возврата значений по умолчанию. Который является, насколько я могу сказать, путь, аннотации обрабатываются самим Java также.
class Defaults implements InvocationHandler {
public static <A extends Annotation> A of(Class<A> annotation) {
return (A) Proxy.newProxyInstance(annotation.getClassLoader(),
new Class[] {annotation}, new Defaults());
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.getDefaultValue();
}
}
Settings s = Defaults.of(Settings.class);
System.out.printf("%s\n%s\n%s\n", s.a(), s.b(), s.c());
Если используется с методом:
@Settings
public void myMethod() {
}
Теперь Ваша аннотация инициализируется со значениями по умолчанию.
Я скомпилировал и запустил нижеприведенный файл с удовлетворительными результатами.
class GetSettings {
public static void main (String[] args){
@Settings final class c { }
Settings settings = c.class.getAnnotation(Settings.class);
System.out.println(settings.aaa());
}
}