如何从接口i2默认方法disp2()调用接口i1默认方法disp1().Is it possible?
interface i1 { 
    default void disp1() { System.out.println("Super interface"); }
}
interface i2 extends i1 {
    default void disp2() { System.out.println("Sub  interface"); }
}发布于 2018-03-15 02:47:15
通过选角。
例如,如果您有一个实现i2的类,因此也实现了i1:
public class C implements i2 {
    public static void main(String[] args) {
        C c = new C();
        c.disp1();
    }
}如果安全,disp1()方法可以将自身强制转换为i2:
interface i1 {
    default void disp1() {
        System.out.println("Super interface");
        if (this instanceof i2)
            ((i2) this).disp2();
    }
}这将输出两行:
Super interface
Sub  interface或者,作为一种更面向对象的方法,您可以在i1中添加disp2()方法吗?然后i2会简单地覆盖它:
interface i1 {
    default void disp1() {
        System.out.println("Super interface");
        ((i2) this).disp2();
    }
    default void disp2() {
    }
}https://stackoverflow.com/questions/49282496
复制相似问题