11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.source.tree;
27
28 import java.util.List;
29
30 /**
31 * A tree node for a {@code case} in a {@code switch} statement.
32 *
33 * For example:
34 * <pre>
35 * case <em>expression</em> :
36 * <em>statements</em>
37 *
38 * default :
39 * <em>statements</em>
40 * </pre>
41 *
42 * @jls section 14.11
43 *
44 * @author Peter von der Ahé
45 * @author Jonathan Gibbons
46 * @since 1.6
47 */
48 public interface CaseTree extends Tree {
49 /**
50 * Returns the expression for the case, or
51 * {@code null} if this is the default case.
52 * @return the expression for the case, or null
53 */
54 ExpressionTree getExpression();
55
56 /**
57 * Returns the statements labeled by the case.
58 * @return the statements labeled by the case
59 */
60 List<? extends StatementTree> getStatements();
61 }
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.source.tree;
27
28 import java.util.List;
29
30 /**
31 * A tree node for a {@code case} in a {@code switch} statement or expression.
32 *
33 * For example:
34 * <pre>
35 * case <em>expression</em> :
36 * <em>statements</em>
37 *
38 * default :
39 * <em>statements</em>
40 * </pre>
41 *
42 * @jls section 14.11
43 *
44 * @author Peter von der Ahé
45 * @author Jonathan Gibbons
46 * @since 1.6
47 */
48 public interface CaseTree extends Tree {
49 /**
50 * Returns the expression for the case, or
51 * {@code null} if this is the default case.
52 * If this case has multiple lables, returns the first label.
53 * @return the expression for the case, or null
54 */
55 ExpressionTree getExpression();
56
57 /**
58 * Returns the labels for this case.
59 * For default case, returns an empty list.
60 *
61 * @return labels for this case
62 * @since 12
63 *
64 * @deprecated This method is modeling a case with multiple labels,
65 * which is part of a preview feature and may be removed
66 * if the preview feature is removed.
67 */
68 @Deprecated(forRemoval=true, since="12")
69 List<? extends ExpressionTree> getExpressions();
70
71 /**
72 * For case with kind {@linkplain CaseKind#STATEMENT},
73 * returns the statements labeled by the case.
74 * Returns {@code null} for case with kind
75 * {@linkplain CaseKind#RULE}.
76 * @return the statements labeled by the case or null
77 */
78 List<? extends StatementTree> getStatements();
79
80 /**
81 * For case with kind {@linkplain CaseKind#RULE},
82 * returns the statement or expression after the arrow.
83 * Returns {@code null} for case with kind
84 * {@linkplain CaseKind#STATEMENT}.
85 *
86 * @return case value or null
87 * @since 12
88 *
89 * @deprecated This method is modeling a rule case,
90 * which is part of a preview feature and may be removed
91 * if the preview feature is removed.
92 */
93 @Deprecated(forRemoval=true, since="12")
94 public default Tree getBody() {
95 return null;
96 }
97
98 /**
99 * Returns the kind of this case.
100 *
101 * @return the kind of this case
102 * @since 12
103 *
104 * @deprecated This method is used to model a rule case,
105 * which is part of a preview feature and may be removed
106 * if the preview feature is removed.
107 */
108 @Deprecated(forRemoval=true, since="12")
109 public default CaseKind getCaseKind() {
110 return CaseKind.STATEMENT;
111 }
112
113 /**
114 * The syntatic form of this case:
115 * <ul>
116 * <li>STATEMENT: {@code case <expression>: <statements>}</li>
117 * <li>RULE: {@code case <expression> -> <expression>/<statement>}</li>
118 * </ul>
119 *
120 * @since 12
121 *
122 * @deprecated This enum is used to model a rule case,
123 * which is part of a preview feature and may be removed
124 * if the preview feature is removed.
125 */
126 @Deprecated(forRemoval=true, since="12")
127 public enum CaseKind {
128 /**
129 * Case is in the form: {@code case <expression>: <statements>}.
130 */
131 STATEMENT,
132 /**
133 * Case is in the form: {@code case <expression> -> <expression>}.
134 */
135 RULE;
136 }
137 }
|