Java为什么T在扩展接口的时候还在调用默认方法

Java Why T is still calling default method when T extends the interface

public class Draw<T extends Print> (Print is a interface)

其他类:

public interface Print {
    static void info(String message) {
        System.out.println("failed");
    }
 }
public class Test implements Print {
    static void info(String message) {
        System.out.println(message);
    }
}

当使用 new Draw<Test>() 并尝试 运行 T.info("Test"); 它只打印“失败”

我做错了什么吗?

静态方法不会被覆盖。您必须调用 Test.info 才能调用您的方法。 静态方法位于接口上,因为它是放置它们的方便位置。这不是您可以覆盖的东西,也不是默认方法。默认方法不是静态的,你必须使用 default 关键字。

如果你想要多态性,使用实例方法,而不是静态方法。