Java 8默认方法潜在问题
接口A
public interface InterfaceA {
void print();
default void testMethod() {
System.out.println("Print A");
}
}
接口B
public interface InterfaceB {
void print();
default void testMethod() {
System.out.println("Print B");
}
}
实现类
// 测试类1
public class ClassImpleAB implements InterfaceA{
@Override
public void print() {
}
}
// 测试类2
public class ClassImpleAB implements InterfaceA,InterfaceB{
@Override
public void print() {
}
}
// 报错:ClassImpleAB inherits unrelated defaults for testMethod() from types InterfaceA and InterfaceB
// 必须实现testMethod()方法
如果类实现了两个接口(类似“多继承”),两个接口又同时存在名字相同的default方法,在这样的情况下,编译器会报错。

浙公网安备 33010602011771号