7

documentation of SafeVarargs에 따르면 @SafeVarargs 주석은 static 또는 final 인 생성자 또는 가변 arity 메소드에만 적용될 수 있습니다. 주석 상속 문제를 제거하기 위해 I have read입니다. 즉, 메서드에 대한 주석은 메서드를 재정의 할 수없는 경우에만 허용됩니다. 분명히 생성자, static 메서드 및 final 메서드를 재정의 할 수 없습니다. 그러나 final classprivate 방법이나 방법을 사용할 수 없습니다. Someone has complained@SafeVarargs private 방법을 지정할 수 없음에 대한 것이지만 neither of these issues has been addressed입니다. 일반적으로 no one really seems to care입니다. 내가 놓친 게 있니? 실용적인 응용 프로그램이없는 것에 대해 불평하고 있습니까? 아니면 ...?@SafeVarags를 최종 클래스의 인스턴스 메서드에 적용 할 수없는 이유는 무엇입니까?

+0

메아리에서 메서드에서 varargs를 사용하는 것이 안전하면 SuppressWarnings 주석을 사용하여 컴파일러에서 불평을 멈추게 할 것입니다. 그러나 왜 효과적으로이 최종 주석을 사용할 수 없는지 잘 모르겠습니다. – jjm

+1

@jjm 올바르게 호출했다면, varargs 메소드에서'@SuppressWarnings ("unchecked") "을 사용하면 해당 위치에서 경고가 표시되지 않지만 그 메소드가 사용되는 곳에서는 경고가 표시됩니다. 따라서 @ SafeVarargs에 대한 _ _ _ _ _ _ _ _ _ _ _ –

답변

5

이것은 Java 9에서 수정 될 예정입니다. http://openjdk.java.net/jeps/213을 참조하십시오.

+0

사실 내 질문에 여기에 링크되어 있지만 이것이 중요하지 않은 제안 (무시할 수있는 무료)인지 또는 통과 가능성이 높은지 여부는 확실하지 않았습니다. 나는 또한 (기이하게도)'final' 클래스에서 메소드에 대한 언급이 없다는 것을 알아 차렸다. 단순한 감독 이외에 다른 이유가 있다고 생각하십니까? –

+0

예, JDK9에 포함될 예정입니다. –

관련 문제