Java default methods are not overridden by delegation
Reports delegation when the delegate object is an instance of a class that overrides (in the case of final and sealed classes) or may override (in the case of open and abstract classes) Java default methods.
By design, Kotlin delegation does not override Java default methods, which can lead to subtle bugs, especially in cases of deep inheritance hierarchies.
Example:
Developers typically expect that all methods, including default methods overridden in the delegate, are forwarded. Instead, Java default methods are called, which can lead to unexpected results.
One quick-fix overrides Java default methods by delegating their implementation to the delegate object:
Another quick-fix overrides Java default methods by explicitly delegating their implementation to the superclass:
Locating this inspection
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
JavaDefaultMethodsNotOverriddenByDelegation- Via Settings dialog
Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.
Inspection ID: JavaDefaultMethodsNotOverriddenByDelegation
New in 2025.1
Suppressing Inspection
You can suppress this inspection by placing the following comment marker before the code fragment where you no longer want messages from this inspection to appear:
More detailed instructions as well as other ways and options that you have can be found in the product documentation:
Inspection Details | |
|---|---|
By default bundled with: |