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 |