Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在groovy类中调用接口的默认方法_Java_Groovy - Fatal编程技术网

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

Java 如何在groovy类中调用接口的默认方法,java,groovy,Java,Groovy,我有一个groovy类页面,它实现了一个名为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

我有一个groovy类页面,它实现了一个名为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仅允许在嵌套/内部类中使用。


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

下面是正确的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):


您是否尝试过简单的
添加图像(“,0,0)
?请提供如何声明您的类。@SzymonStepniak,是的,我尝试过,eclipse仍在显示error@daggett--添加了完整的groovyclass@daggett--谢谢你的帮助。似乎我们可以直接使用它,而不需要超级用户。Eclipse显示错误。
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() );
    }

}