如何在 Groovy 类中“隐藏”元类属性
Posted
技术标签:
【中文标题】如何在 Groovy 类中“隐藏”元类属性【英文标题】:How to 'hide' metaClass property in a Groovy class 【发布时间】:2010-10-23 23:12:39 【问题描述】:我正在创建一些简单的 groovy 类,例如
class Person
int age
String name
在依赖反射提取对象属性的 Java 方法中使用,例如年龄和姓名。问题是 metaClass 也显示为属性。更新 Java 方法以忽略此属性不是一种选择。我尝试将 metaClass 属性设置为 null ,但这不起作用。
【问题讨论】:
编译器会在其他上下文中添加其他成员(如内部类中的内部外部引用)。也许您可以更新反射代码以仅反映包/受保护/公共属性? 你找到隐藏元类的方法了吗? 不,我刚刚解决了它。 不要在 groovy 中创建它们,好像它们只是 POJO 的。 【参考方案1】:MetaClass 在创建期间为 Groovy 类注入。恕我直言,我认为您不能将其设置为 Null。您调用的 setMetaClass 方法仅将您在类上设置的任何自定义元类设置为 Null,而不是在构造期间注入的元类。
【讨论】:
【参考方案2】:如果您使用 Java 和 Groovy 中的这些类,为什么不直接在 Java 中创建 POJO,而不是在 Groovy 中。 我知道这不能回答您的问题,但很高兴知道为什么决定将 Groovy 用于 POJO
【讨论】:
以上是关于如何在 Groovy 类中“隐藏”元类属性的主要内容,如果未能解决你的问题,请参考以下文章