groovy - 从重写的 Java 类调用方法。

标签 groovy

我在从 java 类调用重写方法时遇到问题。 我有以下 Java 类:

public class Base
{
    int state = 0;
    public void called()
    {
        System.out.println("Hello, from called method: " + state);
    }

    public String getFirst() 
    {
       return "From Base;
     }

    //
    ...
    //
}

我使用 groovy 脚本来覆盖 getFirst() ,以便它调用 used()

def base = [ getFirst : {
    called()                    // this line has an error
    "From Second"
    }] as Base

base.getFirst()

我如何实现这个?

最佳答案

你不能以这种方式使用代理魔法...在 Maps 声明时,它不知道它将成为 Base 的代理,因此它会抛出错误

为什么不按正常方式进行呢?

 def base = new Base() {
   public String getFirst() {
     called()
     "from me"
   }
 }

关于groovy - 从重写的 Java 类调用方法。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098811/

相关文章:

spring - 如何在 Controller 单元测试中模拟 grails 4 服务

groovy - 跨越多行时在 Groovy 中省略括号?

java - java和groovy中的内部代码表示

kotlin - viewBindingenabled true 和 buildfeatures viewBinding true 有什么区别

java - 对多个列表中的元素进行分组

groovy - 如何在没有正则表达式的情况下为 spring cloud contract DSL 构建自己的检查

grails - 在 Groovy/Grails 中设置 new URL(...).text 的超时

java - 在运行时从 Java 编译和使用 Groovy 类?

grails - 使用 Groovy 分割 map

regex - 如何使用 Groovy 的正则表达式获取部分匹配的 bool 值?