在Groovy类中实现Java接口



我刚刚开始用Groovy编程。我注意到一个奇怪的行为,却找不到任何解释。

我已经创建了一个Java接口TestInterface.java

public interface TestInterface {
    public void m1();
}
我已经创建了一个Groovy类TestG.groovy
class TestG implements TestInterface {
}
我已经创建了一个Java类TestJ.java
public class TestJ implements TestInterface{
    @Override
    public void m1() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    } 
}

我的问题是在TestG为什么我没有得到任何错误实现抽象方法或声明类为抽象。

java和groovy的不同之处在于,我需要在java中实现抽象方法或将类声明为抽象,而在groovy中不需要。

我知道这个问题已经有一段时间了,上面已经回答了,但是我觉得有必要添加这个。

class TestG implements TestInterface {}

这仍然是"java"做事的方式。使用groovy本质上消除了实现接口的需要(除了作为标记接口)

在groovy中,您只需这样做:

def myObject = [m1: {-> doSomething()}] as TestInterface

最新更新