Reports accesses to private or protected fields of another object. Java allows access to such fields for objects of the same class as the current object but some coding styles discourage this use. Additionally, such direct access to private fields may fail in component-oriented architectures, such as Spring or Hibernate, that expect all access to other objects to be through method calls so the framework can mediate access using proxies.

Example:


  public class Base {
    protected int bar;

    void increment(Base base) {
      bar++;
      base.bar++; // warning: direct access to another object's non-public field
    }
  }
A quick-fix to encapsulate the field is available.

Configure the inspection: