如何从Java访问JavaFX 1.3静态类成员?

时间:2010-06-07 02:06:38

标签: java reflection javafx

我想使用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版本不同。

2 个答案:

答案 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,然后调用该方法。