langtools/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor8.java
changeset 43147 823bfbf9e914
parent 43133 08a858022ea6
equal deleted inserted replaced
43146:7c249fca6c06 43147:823bfbf9e914
     1 /*
     1 /*
     2  * Copyright (c) 2011, 2013, 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 types based on their {@linkplain TypeKind kind} with
    34  * A visitor of types based on their {@linkplain TypeKind kind} with
    35  * default behavior appropriate for the {@link SourceVersion#RELEASE_8
    35  * default behavior appropriate for the {@link SourceVersion#RELEASE_8
    36  * RELEASE_8} source version.  For {@linkplain
    36  * RELEASE_8} source version.  For {@linkplain
    37  * TypeMirror types} <code><i>XYZ</i></code> that may have more than one
    37  * TypeMirror types} <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
    60  * #visitUnknown visitUnknown} method.  A new type kind visitor class
    60  * #visitUnknown visitUnknown} method.  A new type kind visitor class
    61  * will also be introduced to correspond to the new language level;
    61  * will also be introduced to correspond to the new language level;
    62  * this visitor will have different default behavior for the visit
    62  * this visitor will have different default behavior for the visit
    63  * method in question.  When the new visitor is introduced, all or
    63  * method in question.  When the new visitor is introduced, all or
    64  * portions of this visitor may be deprecated.
    64  * portions of this visitor may be deprecated.
    65  *
       
    66  * <p>Note that adding a default implementation of a new visit method
       
    67  * in a visitor class will occur instead of adding a <em>default
       
    68  * method</em> directly in the visitor interface since a Java SE 8
       
    69  * language feature cannot be used to this version of the API since
       
    70  * this version is required to be runnable on Java SE 7
       
    71  * implementations.  Future versions of the API that are only required
       
    72  * to run on Java SE 8 and later may take advantage of default methods
       
    73  * in this situation.
       
    74  *
    65  *
    75  * @param <R> the return type of this visitor's methods.  Use {@link
    66  * @param <R> the return type of this visitor's methods.  Use {@link
    76  *            Void} for visitors that do not need to return results.
    67  *            Void} for visitors that do not need to return results.
    77  * @param <P> the type of the additional parameter to this visitor's
    68  * @param <P> the type of the additional parameter to this visitor's
    78  *            methods.  Use {@code Void} for visitors that do not need an
    69  *            methods.  Use {@code Void} for visitors that do not need an