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 * @apiNote
62 * This method is modeling a case with multiple labels,
63 * which is part of a preview feature and may be removed
64 * if the preview feature is removed.
65 *
66 * @return labels for this case
67 * @since 12
68 */
69 @Deprecated(forRemoval=true, since="12")
70 List<? extends ExpressionTree> getExpressions();
71
72 /**
73 * Returns the statements labeled by the case.
74 * If this is a case in switch expression in for
75 * {@code case expression -> value}, returns a list
76 * containing a single synthetic BreakTree with
77 * the given value.
78 * @return the statements labeled by the case or null
79 */
80 List<? extends StatementTree> getStatements();
81
82 /**
83 * For case with kind {@linkplain CaseKind#RULE},
84 * return the statement or expression after the arrow.
85 * Returns {@code null} for case with kind
86 * {@linkplain CaseKind#STATEMENT}.
87 *
88 * @apiNote
89 * 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 * @return case value or null
94 * @since 12
95 */
96 @Deprecated(forRemoval=true, since="12")
97 public default Tree getBody() {
98 return null;
99 }
100
101 /**
102 * Returns the kind of this case.
103 *
104 * @apiNote
105 * This method is used to model a rule case,
106 * which is part of a preview feature and may be removed
107 * if the preview feature is removed.
108 *
109 * @return the kind of this case
110 * @since 12
111 */
112 @Deprecated(forRemoval=true, since="12")
113 public default CaseKind getCaseKind() {
114 return CaseKind.STATEMENT;
115 }
116
117 /**
118 * The syntatic form of this case:
119 * <ul>
120 * <li>STATEMENT: {@code case <expression>: <statements>}</li>
121 * <li>RULE: {@code case <expression> -> <expression>/<statement>}</li>
122 * </ul>
123 *
124 * @apiNote
125 * This enum is used to model a rule case,
126 * which is part of a preview feature and may be removed
127 * if the preview feature is removed.
128 *
129 * @since 12
130 */
131 @Deprecated(forRemoval=true, since="12")
132 public enum CaseKind {
133 /**
134 * Case is in the form: {@code case <expression>: <statements>}.
135 */
136 STATEMENT,
137 /**
138 * Case is in the form: {@code case <expression> -> <expression>}.
139 */
140 RULE;
141 }
142 }
|
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 * Returns the statements labeled by the case.
73 * If this is a case in switch expression in for
74 * {@code case expression -> value}, returns a list
75 * containing a single synthetic BreakTree with
76 * the given value.
77 * @return the statements labeled by the case or null
78 */
79 List<? extends StatementTree> getStatements();
80
81 /**
82 * For case with kind {@linkplain CaseKind#RULE},
83 * returns the statement or expression after the arrow.
84 * Returns {@code null} for case with kind
85 * {@linkplain CaseKind#STATEMENT}.
86 *
87 * @return case value or null
88 * @since 12
89 *
90 * @deprecated This method is modeling a rule case,
91 * which is part of a preview feature and may be removed
92 * if the preview feature is removed.
93 */
94 @Deprecated(forRemoval=true, since="12")
95 public default Tree getBody() {
96 return null;
97 }
98
99 /**
100 * Returns the kind of this case.
101 *
102 * @return the kind of this case
103 * @since 12
104 *
105 * @deprecated This method is used to model a rule case,
106 * which is part of a preview feature and may be removed
107 * if the preview feature is removed.
108 */
109 @Deprecated(forRemoval=true, since="12")
110 public default CaseKind getCaseKind() {
111 return CaseKind.STATEMENT;
112 }
113
114 /**
115 * The syntatic form of this case:
116 * <ul>
117 * <li>STATEMENT: {@code case <expression>: <statements>}</li>
118 * <li>RULE: {@code case <expression> -> <expression>/<statement>}</li>
119 * </ul>
120 *
121 * @since 12
122 *
123 * @deprecated This enum is used to model a rule case,
124 * which is part of a preview feature and may be removed
125 * if the preview feature is removed.
126 */
127 @Deprecated(forRemoval=true, since="12")
128 public enum CaseKind {
129 /**
130 * Case is in the form: {@code case <expression>: <statements>}.
131 */
132 STATEMENT,
133 /**
134 * Case is in the form: {@code case <expression> -> <expression>}.
135 */
136 RULE;
137 }
138 }
|