我想使用Javafx反射API从Java访问静态JavaFX类成员。
E.g。 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;
}
访问“MyJavaFXClass.thing”需要什么Java代码?
注意:我使用的是JavaFX 1.3 - 我不确定反射API是否与早期的JavaFX版本不同。
答案 0 :(得分:1)
FXClassType classType = FXContext.getInstance().findClass("mypackage.MyJavaFXClass");
FXVarMember var = classType.getVariable("thing");
FXValue value = var.getValue(null);
System.out.println(value.getValueString());
或者如果你想要Object,而不是String。
FXLocal.Value value = (FXLocal.Value)var.getValue(null);
Object obj = value.asObject();
System.out.println(obj);
答案 1 :(得分:0)
你的“MyJavaFXClass”应该实现一个接口IF。 接口IF应该定义至少一个返回“var thing”类型的方法。 那么你的“MyJavaFXClass”必须使用“class MyJavaFXClass extends IF”来实现接口。
要从Java代码访问“东西”,首先将Object强制转换为IF,然后调用该方法。