멤버 변수가 없는 추상 클래스는 인터페이스로 전환되어야 합니다.

 

Java 8에 default method 기능이 추가되면서, 상속된 필드나 자신이 갖고 있는 필드가 없는 추상 클래스들은 인터페이스로 전환이 가능해졌습니다. 하지만, 이 규칙은 클래스를 API로 사용하려는 라이브러리나 기타 애플리케이션에서는 적용되기 적절하지 않을 수 있습니다.

참고: 이 규칙은 프로젝트의 sonar.java.source의 값이 8보다 낮은 경우(java8) 검사하지 않습니다.

규칙을 어긴 코드

public abstract class Car {
  public abstract void start(Environment c);

  public void stop(Environment c) {
    c.freeze(this);
  }
}

규칙을 준수한 해결책

public interface Car {
  public void start(Environment c);

  public default void stop(Environment c) {
    c.freeze(this);
  }
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project