NamedLikeContextualKeyword
Avoid naming of classes and methods that is similar to contextual keywords. When invoking such a method, qualify it.

Severity
WARNING

The problem

The problem we’re trying to prevent is clashes between the names of classes/methods and contextual keywords. Clashes can occur when (1.) naming a class/method, or (2.) when invoking.

When naming

Change problematic names for classes and methods.

class Foo { ... // This can clash with the contextual keyword "yield" void yield() { ... } } 

Another example:

// This can clash with Java modules (JPMS) static class module { ... } 

When invoking

In recent versions of Java, yield is a restricted identifier:

class T { void yield() {} { yield(); } } 
$ javac --release 20 T.java T.java:3: error: invalid use of a restricted identifier 'yield' yield(); ^ (to invoke a method called yield, qualify the yield with a receiver or type name) 1 error 

To invoke existing methods called yield, use qualified names:

class T { void yield() {} { this.yield(); } } 
class T { static void yield() {} { T.yield(); } } 
class T { void yield() {} class I { { T.this.yield(); } } } 

Suppression

Suppress false positives by adding the suppression annotation @SuppressWarnings("NamedLikeContextualKeyword") to the enclosing element.