我见过一些Java示例,它们使用反射在运行时从类外部更改成员变量的值。这可能适用于私有字段,甚至是最终字段。有没有办法在运行时使用反射将字段添加到类中?
我发现了非常相似的问题:Can a Java class add a method to itself at runtime?
答案是肯定的,可以使用定制的类加载器或字节码操作工具。
发布于 2018-06-03 23:11:05
据我所知,答案是否定的。反射应该反映数据,而不是修改它。
发布于 2018-06-04 00:44:00
这是不可能的,事实上,“在运行时添加字段”的想法甚至没有意义。Java是一种静态语言,这意味着对于要编译的代码,所有类字段的类型信息在编译时都必须是已知的,这意味着这些字段必须在编译时存在。如果您创建了一个类,如
class Person {
String name;
int age;
}然后在代码中的某个地方引用person.height,您的代码甚至不会编译,因为height字段不存在。因此,即使您可以在运行时添加height字段,当您的代码根本无法编译时,又有什么意义呢?这就是为什么我说这是不可能的。
发布于 2018-06-04 00:55:34
https://stackoverflow.com/questions/50667841
复制相似问题