java - 不同上下文中同一类的变量

标签 java groovy embedding

我正在尝试将 groovy 嵌入到 java 应用程序中,但遇到了一个奇怪的问题。假设我在 groovy 脚本中定义了这个类:

class MyClass {
    String a;
}

然后我实例化它并将其放入我的应用程序上下文范围( Map<String, Object> 存储在我的主应用程序中并在脚本之间提供公共(public)存储)。

MyClass c = new MyClass()
c.a = "Hello world!"
appContext.share.put("myclass.instance",c)

然后,在其他脚本中(单独运行,具有自己的上下文,但来自相同的源,包括 MyClass.groovy 文件),我尝试读回变量:

MyClass c = (MyClass) appContext.share.get("myclass.instance")

并且得到一个关于无法将 MyClass 实例强制转换为 MyClass 的惊人异常:)。

基本上我明白可能是什么问题,每次编译脚本时,它都会创建具有不同 ID 但名称相同的类的新实例,并且它们彼此不兼容。问题是,在不序列化/反序列化所有共享对象且不使用反射的情况下,我该如何做我想做的事情?

必须注意的是,我无法将 MyClass 类移至 Java 代码,它必须保留在脚本中,因为它是脚本逻辑的一部分。

提前致谢。

最佳答案

如果您尝试将 appContext.share.get("myclass.instance") 强制转换为 MyClass 会怎样? as 执行更“严厉”的转换,它甚至可以将 Map 转换为类。就像c.properties = appContext.share.get("myclass.instance").properties

关于java - 不同上下文中同一类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510774/

相关文章:

java - 滑动刷新后加载更多不起作用

Java Tensorflow + Keras 等价于 model.predict()

java - 从用户那里收到值(value)时,正确的评论方式是什么?

java - 比较目录中的 jar 证书

css - 字体嵌入 : what is wrong here?

java - 在游戏中随机生成物体

groovy - groovyc 是如何工作的?

java - NIFI :How to get node value using variable node name in nifi processor

android: 使用 ActivityGroup 嵌入 Activity

pointers - 初始化嵌入结构时的指针差异