Groovy可以在POJO上动态添加或覆盖方法吗?

Jak*_*ake 11 java groovy

如果我有

// java
class MyClass {
   public String getName() {
     return "hector";
   }
}
Run Code Online (Sandbox Code Playgroud)

和这个类的一个实例.Groovy可以覆盖实例上的getName()方法吗?

Rid*_*del 24

当然你可以使用Dynamic MetaClass.

以下示例明确涵盖您的案例:

def object = new MyClass();
object.metaClass.getName = { "Jake" }
assert "Jake" == object.getName()
Run Code Online (Sandbox Code Playgroud)

  • 请记住,动态添加的方法只能被看到/只能由Groovy代码调用. (2认同)