langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor6.java
changeset 43147 823bfbf9e914
parent 43133 08a858022ea6
child 43257 df68602dc422
equal deleted inserted replaced
43146:7c249fca6c06 43147:823bfbf9e914
     1 /*
     1 /*
     2  * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2005, 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
    34 
    34 
    35 /**
    35 /**
    36  * A visitor of program elements based on their {@linkplain
    36  * A visitor of program elements based on their {@linkplain
    37  * ElementKind kind} with default behavior appropriate for the {@link
    37  * ElementKind kind} with default behavior appropriate for the {@link
    38  * SourceVersion#RELEASE_6 RELEASE_6} source version.  For {@linkplain
    38  * SourceVersion#RELEASE_6 RELEASE_6} source version.  For {@linkplain
    39  * Element elements} <code><i>XYZ</i></code> that may have more than one
    39  * Element elements} <code><i>Xyz</i></code> that may have more than one
    40  * kind, the <code>visit<i>XYZ</i></code> methods in this class delegate
    40  * kind, the <code>visit<i>Xyz</i></code> methods in this class delegate
    41  * to the <code>visit<i>XYZKind</i></code> method corresponding to the
    41  * to the <code>visit<i>Xyz</i>As<i>Kind</i></code> method corresponding to the
    42  * first argument's kind.  The <code>visit<i>XYZKind</i></code> methods
    42  * first argument's kind.  The <code>visit<i>Xyz</i>As<i>Kind</i></code> methods
    43  * call {@link #defaultAction defaultAction}, passing their arguments
    43  * call {@link #defaultAction defaultAction}, passing their arguments
    44  * to {@code defaultAction}'s corresponding parameters.
    44  * to {@code defaultAction}'s corresponding parameters.
    45  *
    45  *
    46  * <p> Methods in this class may be overridden subject to their
    46  * <p> Methods in this class may be overridden subject to their
    47  * general contract.  Note that annotating methods in concrete
    47  * general contract.  Note that annotating methods in concrete
    64  * #visitUnknown visitUnknown} method.  A new abstract element kind
    64  * #visitUnknown visitUnknown} method.  A new abstract element kind
    65  * visitor class will also be introduced to correspond to the new
    65  * visitor class will also be introduced to correspond to the new
    66  * language level; this visitor will have different default behavior
    66  * language level; this visitor will have different default behavior
    67  * for the visit method in question.  When the new visitor is
    67  * for the visit method in question.  When the new visitor is
    68  * introduced, all or portions of this visitor may be deprecated.
    68  * introduced, all or portions of this visitor may be deprecated.
    69  *
       
    70  * <p>Note that adding a default implementation of a new visit method
       
    71  * in a visitor class will occur instead of adding a <em>default
       
    72  * method</em> directly in the visitor interface since a Java SE 8
       
    73  * language feature cannot be used to this version of the API since
       
    74  * this version is required to be runnable on Java SE 7
       
    75  * implementations.  Future versions of the API that are only required
       
    76  * to run on Java SE 8 and later may take advantage of default methods
       
    77  * in this situation.
       
    78  *
    69  *
    79  * @param <R> the return type of this visitor's methods.  Use {@link
    70  * @param <R> the return type of this visitor's methods.  Use {@link
    80  *            Void} for visitors that do not need to return results.
    71  *            Void} for visitors that do not need to return results.
    81  * @param <P> the type of the additional parameter to this visitor's
    72  * @param <P> the type of the additional parameter to this visitor's
    82  *            methods.  Use {@code Void} for visitors that do not need an
    73  *            methods.  Use {@code Void} for visitors that do not need an