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 |