2011-10-11 2 views
23

private 인 내부 클래스에 개인 메서드가 있습니다. SafeVarargs 주석을 사용하고 싶습니다. 그러나 정적 또는 최종 방법 중 하나가 필요합니다. 개인적인 방법이 왜 최종적인 것이어야합니까? 이것은 중복되지 않습니까?java @SafeVarargs 왜 개인 메서드가 최종해야합니까

+0

난 당신이 오류 메시지가 "잘못된 java.lang의 같은 될 것이라고 경우 @Safe 최종 방법에 대한 정적 방법에 대해 생성자에 대한 변수 인수와 자바-9 개인 – gstackoverflow

답변

15

불필요한 점은 훌륭한 점입니다.

최종 또는 정적 요구 사항의 실제 이유는 메서드를 재정의 할 수 없으므로 하위 클래스가 정의에서 @SafeVarargs 주석을 쓸모 없게 만드는 방식으로 데이터를 변조 할 수 없다고 생각합니다. 방법의.

하지만 중복성은 있지만 의사 결정에 나쁜 영향을주지는 않습니다. 프로그래머는 모든 방법을 최대한 비공개로 설정 한 다음 필요에 따라 클래스를 천천히여십시오. 이 메소드가 사적 범위에있을 때이 메소드가 final로 표시되면 메소드를 열어야하는 경우 액세스 레벨 변경만으로 @SafeVarargs 주석을 그대로 둘 수 있습니다. 결승전을 의도적으로 제거하면 컴파일 타임 오류가 발생하지만 이미 가지고있는 경우 개인 액세스 (팀 기반 환경에서 자신이 아닐 수도 있음)를 제거한 사람은 이유에 대해 혼동하지 않습니다 "private"수정자를 제거하면 코드가 더 이상 컴파일되지 않습니다.

+1

에 대한 이후 사용할 수 있습니다 수정 이해합니다. SafeVarargs 주석, 인스턴스 메소드 ... 최종 또는 개인용이 아닙니다. "개인을 제거한 사람은 혼란이 없습니다. –

4

이 기능은 프로젝트 동전 2의 일부이며 개인 방법에 그것의 호출 수락 @SafeVarargs

7월 2017

오는 자바 9 avalaible 될 것입니다.

Link.

관련 문제