猿问

groovy类中如何调用接口的默认方法

我有一个 groovy 类 Page,它实现了一个名为 IImageOperations 的接口。


该接口包含一个默认方法 addImage。我想从 Page 类调用它。


我试图以下面的方式打电话


class Page implements IImageOperations, ITextOperations {


void addImage(PDImageXObject image, float x, float y, float w = 0, float h = 0, float rotate = 0, boolean inline){

    if(w == 0)

        w = image.getWidth();

    if(h == 0)

        h = image.getHeight();

    IImageOperations.super.addImage("", 0, 0);

}

}

但是,它给了我以下错误


Groovy:'Class.this' 和 'Class.super' 的使用只允许在嵌套/内部类中使用。


如果我们将这个 Page 类定义为 Java Class,那么一切正常。


侃侃无极
浏览 180回答 1
1回答

慕村225694

以下正确的java代码import java.lang.reflect.Type;public class A implements Type{    public static void main(String [] arg){        new A().run();    }    public void run(){        System.out.println( Type.super.getTypeName() );    }}在 groovy 下编译失败:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:A.groovy: 10: The usage of 'Class.this' and 'Class.super' is only allowed in nested/inner classes. @ line 10, column 23.                System.out.println( Type.super.getTypeName() );但是以下语法工作正常(groovy 2.4.11):import java.lang.reflect.Type;public class A implements Type{    public static void main(String [] arg){        new A().run();    }    public void run(){        //System.out.println( Type.super.getTypeName() );        System.out.println( ((Type)this).getTypeName() );    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答