Hmmm, that does seem strange. Reading the JLS entry on "Runtime Evaluation of Method Invocation" here: [http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12.4.3] seems to indicate that your expectations would be correct: An implementation of the Java programming language must insure, as part of linkage, that the method m still exists in the type T. ... The implementation must also insure, during linkage, that the type T ...