필드 시그니처 또는 메서드의 시그니처에 클래스가 사용되었으며 시그니처 내 클래스가 멤버 자체보다 가시성이 낮은 경우를 보고합니다.
Java에서는 유효하지만 이러한 멤버는 참조하는 클래스의 가시성 범위 밖에서 사용될 수 없습니다.
예:
public class Parent {
public Child getChild() {
return new Child();
}
private class Child {}
}
추가적으로, Java 9 이상에서 모듈은 클래스의 패키지를 내보내지 않는 방식으로 다른 모듈로부터 자신의 클래스를 숨길 수 있습니다.
그러나 내보낸 API의 일부인 멤버가 시그니처 내의 내보내지 않은 클래스를 참조하는 경우 그러한 멤버는 모듈 밖에서 사용될 수 없습니다.
검사 구성:
- Use the Report non-exported classes exposed in module API (Java 9+) option to report module API members
that expose non-exported classes.
Note that the language level of the project or module needs to be 9 or higher for this option.
- public API 내에 노출된 액세스가 불가능한 클래스 보고 옵션을 사용하면 가시성 범위가 더 작은 클래스를 노출하는 public 멤버를 보고합니다.
- 패키지 로컬 API 내에 노출된 private 클래스를 보고 옵션을 사용하면
private 클래스를 노출하는 패키지 지역 멤버를 보고합니다.