1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
A method that always calls itself will cause a StackOverflowError.
```java
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:
```java
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:
```java
class Delegate implements Processor {
Processor delegate;
void process(String name, int id) {
process(name, id); // error
delegate.process(name, id); // ok
}
}
```
|