Как получить доступ к члену статического класса JavaFX 1.3 из Java? - PullRequest
1 голос
/ 07 июня 2010

Я хочу получить доступ к статическому члену класса JavaFX из Java, используя API отражения Javafx.

например. Код JavaFX:

public var thing;

class MyJavaFXClass {
}

Java-код:

private Object getThing() {
  FXClassType classType = FXContext.getInstance().findClass("mypackage.MyJavaFXClass");

  // Get static member 'thing' from 'MyJavaFXClass'
  // <Insert Code Here>

  return thing;
}

Какой Java-код мне нужен для доступа к MyJavaFXClass.thing??

Примечание: я использую JavaFX 1.3 - я не уверен, отличается ли API отражения здесь от предыдущих версий JavaFX.

Ответы [ 2 ]

1 голос
/ 10 июня 2010
FXClassType classType = FXContext.getInstance().findClass("mypackage.MyJavaFXClass");
FXVarMember var =  classType.getVariable("thing");
FXValue value = var.getValue(null);
System.out.println(value.getValueString());

или если вы хотите объект, а не строку.

FXLocal.Value value = (FXLocal.Value)var.getValue(null);
Object obj = value.asObject();
System.out.println(obj);
0 голосов
/ 10 июня 2010

Ваш "MyJavaFXClass" должен реализовывать интерфейс IF.Интерфейс IF должен определять по крайней мере один метод, который возвращает тип вашей "var thing".Затем ваш «MyJavaFXClass» должен реализовать интерфейс, используя «класс MyJavaFXClass extends IF».

Чтобы получить доступ к «вещи» из кода Java, сначала приведите Object к IF, а затем вызовите метод.

...