Java 反射能否将类绑定到新名称?

Java 反射能否将类绑定到新名称?,java,reflection,binding,scriptengine,Java,Reflection,Binding,Scriptengine,我试图让程序的用户重命名类中的类和方法。新名称可以在运行时读入和配置,它们将使用Java脚本引擎在脚本语言中调用这些类和方法。我需要一种方法将它们的新名称绑定到类和方法的真实名称。我一直在思考,但我不认为这能提供我所需要的能力,或者这是可能的 例: 然后在Paython说 obj = new NewName() obj.hello() 如果这是不可能的,请告诉我 您不能更改方法名称,但可以将对象实例绑定到给定名称,并将其注入脚本语言的上下文中 这只适用于该类的实例,而不适用于实例化新实例 如果

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

例:

然后在Paython说

obj = new NewName()
obj.hello()

如果这是不可能的,请告诉我

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

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

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


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

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

为了克服这个问题,我所做的是将代码从字符串写入文件,用扩展名
.java
保存该文件,编译该文件,然后将其与反射一起使用,或者更好地使用java ScriptEngine API在脚本中使用它(这样可以避免丑陋的反射代码,并使所有内容都处于动态状态)

这里是创建文件的起点

下面是一些用于编写Java脚本的内容


编辑我的问题时,您改变了一个重要方面。当我在Python中调用这个方法时,我故意给它起了一个不同的名字……请把它编辑回来。这是我的一个要求,使我们的应用程序更加抽象和通用。因为我正在编写一种将API包装/绑定到任何/每种JSR223兼容脚本语言的方法,所以他们不希望熟悉一种语言及其自己的命名约定的人坚持使用我们的Java命名约定。例如,在Java中,函数的大小写是驼峰式的,以动词开头,以名词结尾,但在Python中,它们的命名约定可能都是大写的名词……这就是实现我的问题的原因。好吧,我想我明白你想做什么,但仍然不认为这是个好主意。我认为您可能只需要创建更多的工作,特别是因为这意味着您需要为每种脚本语言提供不同版本的文档
obj = new NewName()
obj.hello()