我试图让我的程序的用户重命名类中的类和方法。可以在运行时读入和配置新名称,并使用Java Script Engine以脚本语言调用这些类和方法。我需要一种方法将它们的新名称绑定到类和方法的真实名称。我一直在寻找反思,但我不认为这可以为我提供我需要的能力,或者这甚至可能吗?
例如:
public class RealName {
public void printHello() {
System.out.println("Hello");
}
}
然后也许在Paython中说
obj = new NewName()
obj.hello()
请告诉我这是不可能的!
答案 0 :(得分:1)
您无法更改方法名称,但可以将对象的实例绑定到给定名称,并将其注入脚本语言的上下文中。
这只适用于该类的实例,而不适用于实例化新实例。
如果您真的想要这个,您可以使用目标脚本语言中的新名称和方法名称生成子类,并将它们注入上下文以获得您正在寻找的效果。
说完所有这些我无法真正想出任何这个。
答案 1 :(得分:0)
要从我发现的内容中回答我的问题,不能使用反射将类绑定到新名称。事实上,我发现没有简单的方法来进行动态重命名。
我为克服这个问题所做的是将代码从字符串写入文件,保存扩展名为.java
的文件,编译该文件,然后使用反射或更好地使用它在脚本中使用Java ScriptEngine API(通过这种方式,您可以避免使用丑陋的反射代码并实际拥有动态和动态的所有内容)。
这是创建文件的起点,
这里有用于编写Java脚本的东西,