首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中,可以在运行时使用反射将成员变量添加到类中吗?

问在Java中,可以在运行时使用反射将成员变量添加到类中吗?
EN

Stack Overflow用户
提问于 2018-06-03 23:07:44
回答 3查看 1K关注 0票数 1

我见过一些Java示例,它们使用反射在运行时从类外部更改成员变量的值。这可能适用于私有字段,甚至是最终字段。有没有办法在运行时使用反射将字段添加到类中?

我发现了非常相似的问题:Can a Java class add a method to itself at runtime?

答案是肯定的,可以使用定制的类加载器或字节码操作工具。

EN

回答 3

Stack Overflow用户

发布于 2018-06-03 23:11:05

据我所知,答案是否定的。反射应该反映数据,而不是修改它。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 00:44:00

这是不可能的,事实上,“在运行时添加字段”的想法甚至没有意义。Java是一种静态语言,这意味着对于要编译的代码,所有类字段的类型信息在编译时都必须是已知的,这意味着这些字段必须在编译时存在。如果您创建了一个类,如

代码语言:javascript
复制
class Person {
    String name;
    int age;
}

然后在代码中的某个地方引用person.height,您的代码甚至不会编译,因为height字段不存在。因此,即使您可以在运行时添加height字段,当您的代码根本无法编译时,又有什么意义呢?这就是为什么我说这是不可能的。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 00:55:34

使用反射:不能,但可以使用设计模式在一定程度上添加行为。

请参阅以下文档。link

我希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50667841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档