Tôi đang chơi xung quanh tính năng mới Java 8 của thời gian gần đây và đã chứng kiến hành vi thú vị:Trong java 8, tại sao không thể gọi giao diện phương pháp tĩnh rằng lớp hiện tại đang triển khai
Đây là okay:
Class A { static void staticMethodInA() {println();} }
Class B extends A {}
B.staticMethodInA();
Điều này sẽ gây ra lỗi: phương pháp tĩnh có thể được gọi khi chứa lớp giao diện chỉ.
interface A { static void staticMethodInA() {println();} }
Class B implements A {}
B.staticMethodInA(); // from here IntelliJ complaints..
Ai đó có thể cho tôi biết lý do tại sao nhà thiết kế Java 8 có thể chọn xử lý 2 trường hợp trên khác nhau?
Related: http://stackoverflow.com/questions/129267/why-no-static-methods-in-interfaces-but-static-fields-and-inner-classes-ok – skaffman