Java 8부터 default
메소드가 인터페이스에 도입되었습니다. 효과적으로,이 방법은있는 모든 방법은 interface
있습니다 abstract
.
Java 9 (아마도)부터 private
메소드가 허용됩니다. 이 의미에서 모든 방법은 interface
있습니다 public abstract
.
"자바 인터페이스의 메소드가 public
액세스 수정자를 사용하거나 사용하지 않고 선언해야합니까 ?" 스택 오버플로에서 https : //.com/questions/161633/should-methods-in-a-java-interface-be-declared-with-or-with-out-a-public-access-m
거기에, 대부분의 답변은 public abstract
에있는 방법이 interface
이외의 것이 될 수 없으므로 사용해서는 안된다고 주장했습니다 public abstract
. 그것은 더 이상 사실이 아닙니다.
따라서 이러한 새로운 인터페이스 기능을 고려하여 public abstract
키워드를 Java 인터페이스 메소드 선언에 사용해야 합니까?
특정 환경에서는 소프트웨어 엔지니어는 경험하지만 Java에서는 경험이없는 사람들이 수시로 Java 코드를 읽습니다. 나는 밖으로 떠나는 느낌 public abstract
키워드 것은 이제 인터페이스는이 키워드를 사용하는 다른 규칙을 가지고 온 방법의 역사에 익숙하지 않은 사람들을 위해 혼란의 추가 점을 생성합니다.
abstract
적용되는 조건 이 점점 복잡해지고 있기 때문에 상황이 바뀔 수 있다고 생각했습니다 . 자바 9에서, 한 문장이 될 수도, "는 부족한 인터페이스 방법 default
수정 또는 static
수정 또는 private
수정 암시 추상적 인 ...입니다"또한, 명시 적으로 키워드를 사용하지 않는 보조 인자, 즉, 모든 인터페이스 방법이라는 것을 public abstract
, 지금은 바보입니다.
stream
에를 java.util.Collection
, 또는 Map.getOrDefault()
. 대안은 새로운 하위 인터페이스를 만들고 Graphics2D와 같이 모두 다운 캐스트하도록하는 것입니다.
default
수정 자 또는 수정자가 없는 인터페이스 방법static
은 암시 적으로abstract
...abstract
"이러한 메소드 선언에 수정자를 중복 지정하도록 스타일 문제로 권장하지 않습니다 ." 왜 상황이 변해야한다고 생각하십니까?