gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:58 24 4
gpt4 key购买 nike

在 Java 中是否可以在运行时给一个类甚至它的函数一个新名称。通过在程序启动时将新名称作为参数或在配置文件中读取?

更新:

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

    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我可以在运行时添加名称,使用组合创建适配器类,然后编译文件,瞧,脚本语言人员可以使用他们定义的名称而不是我的 API 的 Java 名称。

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

更新 2:

对于任何尝试此操作的人来说,这是另一种可能的解决方案,

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

这将直接带您到他们的常见问题解答,其中有一个是针对这个确切问题的。

最佳答案

不,您需要重构引用并重新编译执行。

关于java - 你能动态地重命名一个类名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com