A method that always calls itself will cause a StackOverflowError.
int oops() { return oops(); }
Exception in thread "main" java.lang.StackOverflowError at Test.oops(X.java:3) at Test.oops(X.java:3) ...
The fix may be to call another method with the same name:
void process(String name, int id) { process(name, id); // error process(name, id, /*verbose=*/ true); // ok } void process(String name, int id, boolean verbose) { // ... }
or to call the method on a different instance:
class Delegate implements Processor { Procesor delegate; void process(String name, int id) { process(name, id); // error delegate.process(name, id); // ok } }