java – 你能动态重命名一个类名吗?


Java中是否有可能在运行时为类或甚至其函数提供新名称.通过在程序启动时将新名称作为参数或配置文件读入?

更新:

这就是目的.我正在使用Java Script Engine来允许任何兼容JSR 223的脚本语言访问我们的API.我们的一些客户不习惯使用Java及其命名约定,并且使用自己特定的命名约定会感觉更舒服.因此,我需要让他们能够动态更改API的类和函数名称,而无需在代码中实际更改它们.有人建议我使用Map和某种带有字符串名称和实际Java名称的绑定,例如:

    map.put("Hello",HelloWorld.class)

    Object obj = new Hello();

应该是一样的,

    Object obj = new HelloWorld();

如果不可能,请告诉我原因.我需要一个可靠的Java专业知识答案.这是我的联盟,我需要事实告诉人们为什么这是不可能的,即使我自己几乎可以肯定这是不可能的.

可能解决方案

这是我提出的壁橱解决方案.使用此链接,
https://weblogs.java.net/blog/2005/08/10/reflection-and-dynamically-changing-classes
我可以在运行时添加名称,使用组合来创建一个Adapter类,然后编译该文件,然后脚本语言人员可以使用他们定义的名称而不是我的API的Java名称.

这是实现这一目标的唯一可行方法吗?

更新2:

这是另一个尝试这个的人可能的解决方案,

http://asm.ow2.org/doc/faq.html

这将直接带你到他们经常被问到的问题,这些问题会有一个问题.

最佳答案 不,您需要重构引用并重新编译才能执行.

点赞