< prev index next >
src/java.compiler/share/classes/javax/lang/model/element/ElementVisitor.java
Print this page
@@ -57,12 +57,12 @@
* <em>default methods</em>. However, default methods are only
* available on Java SE 8 and higher releases and the {@code
* javax.lang.model.*} packages bundled in Java SE 8 were required to
* also be runnable on Java SE 7. Therefore, default methods
* were <em>not</em> used when extending {@code javax.lang.model.*}
- * to cover Java SE 8 language features. However, default methods may
- * be used in subsequent revisions of the {@code javax.lang.model.*}
+ * to cover Java SE 8 language features. However, default methods
+ * are used in subsequent revisions of the {@code javax.lang.model.*}
* packages that are only required to run on Java SE 8 and higher
* platform versions.
*
* @param <R> the return type of this visitor's methods. Use {@link
* Void} for visitors that do not need to return results.
@@ -83,15 +83,20 @@
* @return a visitor-specified result
*/
R visit(Element e, P p);
/**
- * A convenience method equivalent to {@code v.visit(e, null)}.
+ * A convenience method equivalent to {@code visit(e, null)}.
+ *
+ * @implSpec The default implementation is {@code visit(e, null)}.
+ *
* @param e the element to visit
* @return a visitor-specified result
*/
- R visit(Element e);
+ default R visit(Element e) {
+ return visit(e, null);
+ }
/**
* Visits a package element.
* @param e the element to visit
* @param p a visitor-specified parameter
@@ -144,12 +149,18 @@
*/
R visitUnknown(Element e, P p);
/**
* Visits a module element.
+ *
+ * @implSpec Visits a {@code ModuleElement} by calling {@code
+ * visitUnknown(e, p)}.
+ *
* @param e the element to visit
* @param p a visitor-specified parameter
* @return a visitor-specified result
* @since 9
*/
- R visitModule(ModuleElement e, P p);
+ default R visitModule(ModuleElement e, P p) {
+ return visitUnknown(e, p);
+ }
}
< prev index next >