This method is not annotated with @Inject, but it overrides a method that is annotated with @javax.inject.Inject. The method will not be Injected.


The problem

When classes declare that they have an @javax.inject.Injected method, dependency injection tools must call those methods after first calling any @javax.inject.Inject constructor, and performing any field injection. These methods are part of the initialization contract for the object.

When subclasses override methods annotated with @javax.inject.Inject and don’t also annotate themselves with @javax.inject.Inject, the injector will not call those methods as part of the subclass’s initialization. This may unexpectedly cause assumptions taken in the superclass (e.g.: this post-initialization routine is finished, meaning that I can safely use this field) to no longer hold.

This compile error is intended to prevent this unintentional breaking of assumptions. Possible resolutions to this error include:


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