【发布时间】:2016-02-24 20:11:48
【问题描述】:
我对 java 8 功能非常陌生,并尝试了解默认方法。有没有比使用匿名类更容易通过同一接口的另一个默认方法调用默认方法的方法? 例如:
public class Frame{
public static void main(String... args){
Frame.C c= new Frame.C();
c.doSomething();
}
public interface A{
public default void doSomething(){
System.out.println("A");
}
}
public interface B extends A {
@Override
public default void doSomething(){
System.out.println("B");
//is there an easier way to invoke that method??
new B(){}.other();
}
default public void other(){
//doSomething();
System.out.println("other");
}
}
public static class C implements B{
@Override
public void other(){
Lambda.B.super.other();
System.out.println("C");
}
}
}
【问题讨论】:
-
所以,不是
this.other(),而是您明确想要确切的默认行为? -
你为什么希望多态方法是非多态的?
-
从客户端的角度来看,默认方法是只是普通的老式普通接口方法。默认值仅在声明子类时发挥作用。
-
如果你希望方法是非多态的,也许它应该是静态方法而不是默认方法。
标签: java java-8 default-method