src/share/classes/java/lang/reflect/Method.java
Print this page
@@ -502,10 +502,26 @@
@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() {