False alarm from ClassInitializationDeadlock for inner enum implementing outer interface with default method (original) (raw)
Error Prone 2.27.0 produces a ClassInitializationDeadlock warning for the following code:
public interface TestInterface {
default Object foo() { return null; }
public enum TestEnum implements TestInterface { INSTANCE; } }
The exact message is
TestInterface.java:8: warning: [ClassInitializationDeadlock] Possible class initialization deadlock: TestEnum is a subclass of the containing class TestInterface
INSTANCE;
^
(see https://errorprone.info/bugpattern/ClassInitializationDeadlock)
Interestingly, it does not happen with a class instead of an enum, nor if I remove the default method.
My assumption is that this is a false alarm, because I don't see how initializing TestInterface would require initializing TestEnum.