如何在没有反射和动态代理的情况下简单地显式调用默认方法?

Mic*_*zyk 3 java methods default java-8

我正在阅读Java 8中的默认方法,我陷入了一件事 - 有没有办法从接口调用默认方法而不实现它,或者使用动态代理?通过使用一种简单的方法,如下面的方法:

interface DefaultTestInterface{
    default void method1(){
        //default method
    }
}
class ImplementingClass implements DefaultTestInterface{
    public void method1(){
        //default method invocation in implementing method
        DefaultTestInterface.super.method1();
    }
    void method2(){
        //default method invocation in implementing class
        DefaultTestInterface.super.method1();
    }
}
public class Main {
    public static void main(String[] args) {
        //is there any way to simply invoke default method without using proxy and reflection?
    }
}
Run Code Online (Sandbox Code Playgroud)

我读了类似的问题,但第一个只与实现方法中的调用相关联,另外两个与使用反射反射的动态代理连接.

那些解决方案非常复杂,我想知道是否有更简单的方法.我也阅读了那些文章,但我找不到解决问题的方法.我将不胜感激任何帮助.

das*_*ght 6

如果接口只有一个方法,或者它的所有方法都默认实现,所有你需要做的是创造,它的匿名实现实现,你要呼叫的方法:

(new DefaultTestInterface() {}).method1();
Run Code Online (Sandbox Code Playgroud)

演示.