src/share/classes/java/lang/reflect/Method.java

Print this page

        

*** 502,511 **** --- 502,527 ---- @Override public boolean isSynthetic() { return super.isSynthetic(); } + /** + * Returns {@code true} if this method is a default + * method; returns {@code false} otherwise. + * + * A default method is a non-abstract method, that is, a method + * with a body, declared in an interface type. + * + * @return true if and only if this method is a default + * method as defined by the Java Language Specification. + * @since 1.8 + */ + public boolean isDefault() { + return (getModifiers() & Modifier.ABSTRACT) == 0 && + getDeclaringClass().isInterface(); + } + // NOTE that there is no synchronization used here. It is correct // (though not efficient) to generate more than one MethodAccessor // for a given Method. However, avoiding synchronization will // probably make the implementation more scalable. private MethodAccessor acquireMethodAccessor() {