Reports classes or interfaces that can be replaced with an implementation or extension of a more specific commonly used class or interface.

For this inspection to work, a superclass needs to be in project source files and the project needs to use the IntelliJ IDEA build system.

Example:


  class MyInheritor implements A {} // B suggested on the A reference

  interface A {}

  abstract class B implements A {}

  abstract class C1 extends B {}
  abstract class C2 extends B {}
  abstract class C3 extends B {}
  abstract class C4 extends B {}
  abstract class C5 extends B {}

By default, this inspection doesn't highlight issues in the editor but only provides a quick-fix.

New in 2017.2