gpt4 book ai didi

java - 创建以保留字为变量的动态类

转载 作者:行者123 更新时间:2023-11-29 04:40:22 26 4
gpt4 key购买 nike

这个问题曾经在Reserved words as variable or method names 被问过,除了“你为什么要这样做”之外没有令人满意的答案。 .我会再问一遍,并提供解释为什么有必要的上下文,甚至是正确解决方案的方向。

我正在编写动态构建类的代码以匹配我无法控制的数据库模式。在大多数情况下,代码运行良好,但在大约 0.1% 的列情况下,Java 中的保留字被用作列名。以下代码用于在类中创建动态字段:

evalClass.addField(CtField.make("public"+ columnType + ""+ columnName + ";", evalClass));

现在,对于 Java 语言,这会导致问题,但是在 JVM 字节码中,这应该是完全合法的,因此应该有一种方法可以动态创建此字段并使用字节码操作访问它。有没有人有任何示例说明如何以支持任意字符串(包括空格和保留字)的方式完成此操作?谢谢!

最佳答案

不清楚您卡在了哪一部分。任何字节码操作库都应该允许您这样做。

例如,使用 ASM,您只需将字符串直接传递给 visitField。没有可以跳过的铁环或任何东西。

请注意,即使在字节码级别,字段名称仍然存在一些限制。特别是,在 MUTF8 编码中,它们的长度不能超过 65535 字节。

关于java - 创建以保留字为变量的动态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438775/

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