如何“隐藏” Groovy 类中的 metaClass 属性
我正在创建一些简单的groovy 类,例如,
class Person {
int age
String name
}
它们在Java 方法中使用,该方法依赖于反射来提取对象属性,例如年龄和名称。 问题是 metaClass 也显示为属性。 更新 Java 方法以忽略此属性不是一种选择。 我尝试将 metaClass 属性设置为 null,但这不起作用。
I am creating some simple groovy classes, e.g.
class Person {
int age
String name
}
that are being used in a Java method that relies on reflection to pull out the object properties, e.g. age and name. The problem is that metaClass is also showing up as a property. Updating the Java method to ignore this property is not an option. I've tried setting the metaClass property to null but that didn't work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您使用 Java 和 Groovy 中的这些类,为什么不在 Java 中而不是 Groovy 中创建 POJO。
我知道这并不能回答您的问题,但很高兴知道为什么决定将 Groovy 用于 POJO
If you are using these classes from Java and Groovy why not just create the POJO's in Java and not Groovy.
I know this doesn't answer your question but it would be nice to know why the decision to use Groovy for the POJOs
MetaClass 在创建期间为 Groovy 类注入。 恕我直言,我认为你不能将其设置为空。 您调用的 setMetaClass 方法仅将您在类上设置的任何自定义元类设置为 Null,而不是在构造期间注入的元类。
MetaClass gets injected for a Groovy class during the creation. IMHO I don't think you can set it to Null. The setMetaClass method which you called only sets any custom metaclass you may have set on your class to Null and not the one which gets injected during construction.