简体   繁体   English

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

[英]How do I access a JavaFX 1.3 static class member from Java?

I want to access a static JavaFX class member from Java using the Javafx reflection API. 我想使用Javafx反射API从Java访问静态JavaFX类成员。

Eg JavaFX code: 例如JavaFX代码:

public var thing;

class MyJavaFXClass {
}

Java code: Java代码:

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

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

  return thing;
}

What Java code do I need to access 'MyJavaFXClass.thing'? 访问“ MyJavaFXClass.thing”需要什么Java代码?

Note: I am using JavaFX 1.3 - I'm not sure if the reflection API is different here to earlier JavaFX versions. 注意:我正在使用JavaFX 1.3-我不确定反射API是否与早期JavaFX版本不同。

FXClassType classType = FXContext.getInstance().findClass("mypackage.MyJavaFXClass");
FXVarMember var =  classType.getVariable("thing");
FXValue value = var.getValue(null);
System.out.println(value.getValueString());

or if you want the Object, not the String. 或者如果您想要对象,而不是字符串。

FXLocal.Value value = (FXLocal.Value)var.getValue(null);
Object obj = value.asObject();
System.out.println(obj);

Your "MyJavaFXClass" should implement an interface IF. 您的“ MyJavaFXClass”应实现接口IF。 The interface IF should define at least one method that returns the type of your "var thing". 接口IF应该至少定义一种返回“可变物”类型的方法。 Your "MyJavaFXClass" then must implement the interface using "class MyJavaFXClass extends IF". 然后,您的“ MyJavaFXClass”必须使用“ Class MyJavaFXClass extended IF”实现接口。

To access your "thing" from Java code, first cast the Object to IF and then call the method. 要从Java代码访问“事物”,首先将Object转换为IF,然后调用该方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM