如何在 Groovy 类中“隐藏”metaClass 属性

Joe*_*oel 5 reflection groovy metaclass

我正在创建一些简单的常规类,例如

class Person {
    int age
    String name
}
Run Code Online (Sandbox Code Playgroud)

Java 方法中使用的这些方法依赖于反射来提取对象属性,例如年龄和姓名。问题是 metaClass 也显示为属性。更新 Java 方法以忽略此属性不是一种选择。我尝试将 metaClass 属性设置为 null,但这不起作用。

all*_*lts 0

MetaClass 在创建期间为 Groovy 类注入。恕我直言,我认为你不能将其设置为空。您调用的 setMetaClass 方法仅将您在类上设置的任何自定义元类设置为 Null,而不是在构造期间注入的元类。