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 |