49 lines
1.1 KiB
Plaintext
49 lines
1.1 KiB
Plaintext
Even if it is technically possible, https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8[Restricted Identifiers] should not be used as identifiers. This is only possible for compatibility reasons, using it in Java code is confusing and should be avoided.
|
|
|
|
|
|
Note that this applies to any version of Java, including the one where these identifiers are not yet restricted, to avoid future confusion.
|
|
|
|
|
|
This rule reports an issue when restricted identifiers:
|
|
|
|
* var
|
|
* yield
|
|
* record
|
|
|
|
are used as identifiers.
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
var var = "var"; // Noncompliant: compiles but this code is confusing
|
|
var = "what is this?";
|
|
|
|
int yield(int i) { // Noncompliant
|
|
return switch (i) {
|
|
case 1: yield(0); // This is a yield from switch expression, not a recursive call.
|
|
default: yield(i-1);
|
|
};
|
|
}
|
|
|
|
String record = "record"; // Noncompliant
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
var myVariable = "var";
|
|
|
|
int minusOne(int i) {
|
|
return switch (i) {
|
|
case 1: yield(0);
|
|
default: yield(i-1);
|
|
};
|
|
}
|
|
|
|
String myRecord = "record";
|
|
----
|
|
|
|
== See
|
|
|
|
* https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8[JLS16, 3.8: Identifiers]
|