What is a compile constant expression?
A compile time constant expression is an expression whose value can be
determined at compile time and can not include any value that
could possibly change after compilation.
A compile-time constant expression is an expression denoting a value of
primitive type or a String that does not complete abruptly and is
composed using only the following (JLS3:
15.28 constant expression):
-
Literals of primitive type and literals of type String
-
Casts to primitive types and casts to type String
-
The unary operators +, -, ~, and ! (but not ++ or --)
-
The multiplicative operators *, /, and %
-
The additive operators + and -
-
The shift operators <<, >>, and >>>
-
The relational operators <, <=, >, and >= (but not instanceof)
-
The equality operators == and !=
-
The bitwise and logical operators &, ^, and |
-
The conditional-and operator && and the conditional-or operator ||
-
The ternary conditional operator ? :
-
Parenthesized expressions whose contained expression is a constant expression.
-
Simple names that refer to constant variables (?4.12.4).
-
Qualified names of the form TypeName . Identifier that refer to constant
variables (?4.12.4).