Well, up to 8 Java methods staticin interfacewere not allowed, so, obviously, any attempt to use them in the previous version, or in a class file that has an older version, it is doomed to failure, no matter how it is implemented in Java 8.
Prior to Java 8, we had the following two rules:
The class_index element of the structure CONSTANT_Methodref_infomust be a class type, not an interface type.
The class_index element of the structure CONSTANT_InterfaceMethodref_infomust be an interface type.
(see JVMSpec 7 §4.4.2 )
The method descriptor invokestaticmust reference the entryCONSTANT_Methodref_info
(. JVMSpec 7 §6.5)
(§5.1), (§4.3.3) , .
, , " " , Java 8. JVM Java 8 , static.
, static interface s, invokestatic, .
, , , - , " " CONSTANT_Methodref_info " ". , :
(JVMSpec 8 §6.5):
(§5.1), (. 4.3.3) , , .
, invokestatic , , . , , static. , interface .
, , CONSTANT_Methodref_info CONSTANT_InterfaceMethodref_info, . , .
: - default default invokespecial , abstract . , invokespecial interface.
, , , default , invokeinterface invokespecial.