langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor8.java
changeset 43147 823bfbf9e914
parent 43133 08a858022ea6
equal deleted inserted replaced
43146:7c249fca6c06 43147:823bfbf9e914
     1 /*
     1 /*
     2  * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    32 
    32 
    33 /**
    33 /**
    34  * A visitor of program elements based on their {@linkplain
    34  * A visitor of program elements based on their {@linkplain
    35  * ElementKind kind} with default behavior appropriate for the {@link
    35  * ElementKind kind} with default behavior appropriate for the {@link
    36  * SourceVersion#RELEASE_8 RELEASE_8} source version.  For {@linkplain
    36  * SourceVersion#RELEASE_8 RELEASE_8} source version.  For {@linkplain
    37  * Element elements} <code><i>XYZ</i></code> that may have more than one
    37  * Element elements} <code><i>Xyz</i></code> that may have more than one
    38  * kind, the <code>visit<i>XYZ</i></code> methods in this class delegate
    38  * kind, the <code>visit<i>Xyz</i></code> methods in this class delegate
    39  * to the <code>visit<i>XYZKind</i></code> method corresponding to the
    39  * to the <code>visit<i>Xyz</i>As<i>Kind</i></code> method corresponding to the
    40  * first argument's kind.  The <code>visit<i>XYZKind</i></code> methods
    40  * first argument's kind.  The <code>visit<i>Xyz</i>As<i>Kind</i></code> methods
    41  * call {@link #defaultAction defaultAction}, passing their arguments
    41  * call {@link #defaultAction defaultAction}, passing their arguments
    42  * to {@code defaultAction}'s corresponding parameters.
    42  * to {@code defaultAction}'s corresponding parameters.
    43  *
    43  *
    44  * <p> Methods in this class may be overridden subject to their
    44  * <p> Methods in this class may be overridden subject to their
    45  * general contract.  Note that annotating methods in concrete
    45  * general contract.  Note that annotating methods in concrete
    62  * #visitUnknown visitUnknown} method.  A new abstract element kind
    62  * #visitUnknown visitUnknown} method.  A new abstract element kind
    63  * visitor class will also be introduced to correspond to the new
    63  * visitor class will also be introduced to correspond to the new
    64  * language level; this visitor will have different default behavior
    64  * language level; this visitor will have different default behavior
    65  * for the visit method in question.  When the new visitor is
    65  * for the visit method in question.  When the new visitor is
    66  * introduced, all or portions of this visitor may be deprecated.
    66  * introduced, all or portions of this visitor may be deprecated.
    67  *
       
    68  * <p>Note that adding a default implementation of a new visit method
       
    69  * in a visitor class will occur instead of adding a <em>default
       
    70  * method</em> directly in the visitor interface since a Java SE 8
       
    71  * language feature cannot be used to this version of the API since
       
    72  * this version is required to be runnable on Java SE 7
       
    73  * implementations.  Future versions of the API that are only required
       
    74  * to run on Java SE 8 and later may take advantage of default methods
       
    75  * in this situation.
       
    76  *
    67  *
    77  * @param <R> the return type of this visitor's methods.  Use {@link
    68  * @param <R> the return type of this visitor's methods.  Use {@link
    78  *            Void} for visitors that do not need to return results.
    69  *            Void} for visitors that do not need to return results.
    79  * @param <P> the type of the additional parameter to this visitor's
    70  * @param <P> the type of the additional parameter to this visitor's
    80  *            methods.  Use {@code Void} for visitors that do not need an
    71  *            methods.  Use {@code Void} for visitors that do not need an