Description
If there is an interface having the static method foo and a class Impl implementing this interface also having a static method foo, then calling Impl.foo() calls the method on the interface. For an easy self contained example have a look at https://github.com/wolfs/groovy-static-interface-method-test/blob/master/src/test/groovy/StaticInterfaceTest.groovy.
This can yield class cast exceptions on Java 8 and from Java 9 build 125 onwards this yields
java.lang.IncompatibleClassChangeError: Method ... must be InterfaceMethodref constant
This verification has been introduced here: https://bugs.openjdk.java.net/browse/JDK-8145148.
Attachments
Issue Links
- links to