反射可以将类绑定到新名称吗?



我试图让我的程序的用户重命名类和类中的方法。新的名称可以在运行时读取和配置,它们将使用Java Script Engine在脚本语言中调用这些类和方法。我需要一种方法将它们的新名称绑定到类和方法的真实名称。我一直在看反射,但我不认为这可以提供我所需要的能力,或者这是可能的吗?

,

public class RealName {
    public void printHello() {
        System.out.println("Hello");
    }
}

然后在python中输入

obj = new NewName()
obj.hello()
如果这是不可能的,请告诉我!

不能更改方法名,但可以将对象的实例绑定到给定的名称,并将其注入脚本语言的上下文中。

这只适用于类的实例,不适用于实例化新实例。

如果你真的想这样做,你可以在目标脚本语言中生成具有新名称和方法名称的子类,并将它们注入到上下文中,以获得你想要的效果。

说了这么多,我实在想不出一个好的理由来做这些。

回答我的问题,从我发现没有,你不能使用反射绑定一个类的新名称。事实上,我发现动态重命名没有简单的方法。

我所做的是克服这是写代码从一个字符串到一个文件,保存该文件扩展名.java,编译该文件,然后使用反射或更好地使用它使用Java ScriptEngine API的脚本内(这样你可以避免丑陋的反射代码,实际上有一切动态和飞行)。

这是创建文件的起点,

动态内存编译

这里是Java脚本,

Java脚本

相关内容

  • 没有找到相关文章