-
CSR
-
Resolution: Approved
-
P4
-
None
-
source
-
minimal
-
Adding new default method to an interface.
-
Java API
-
SE
Summary
Add a getOutermostTypeElement
convenience method to javax.lang.model.util.Elements
.
Problem
The javax.lang.model
API does not have a convenient way to access the outermost class or interface that may contain an element.
Solution
Add the method in question to the convenience interface intended to host such methods. A functional default implementation is included as part of the interface update.
Specification
/**
* {@return the outermost type element an element is contained in
* if such a containing element exists; otherwise returns {@code
* null}}
*
* {@linkplain ModuleElement Modules} and {@linkplain
* PackageElement packages} do <em>not</em> have a containing type
* element and therefore {@code null} is returned for those kinds
* of elements.
*
* A {@link NestingKind#TOP_LEVEL top-level} class or
* interface is its own outermost type element.
*
* @implSpec
* The default implementation of this method first checks the kind
* of the argument. For elements of kind {@code PACKAGE}, {@code
* MODULE}, and {@code OTHER}, {@code null} is returned. For
* elements of other kinds, the element is examined to see if it
* is a top-level class or interface. If so, that element is
* returned; otherwise, the {@linkplain
* Element#getEnclosingElement enclosing element} chain is
* followed until a top-level class or interface is found. The
* element for the eventual top-level class or interface is
* returned.
*
* @param e the element being examined
* @see Element#getEnclosingElement
* @since 18
*/
default TypeElement getOutermostTypeElement(Element e)
- csr of
-
JDK-8140442 Add getOutermostTypeElement to javax.lang.model utility class
- Resolved