다음과 같은 간단한 인터페이스 상속 계층을 고려하십시오.Java : 사용되지 않는 멤버를 무시하는 파생 인터페이스에서 더 이상 사용되지 않는 경고를 피하는 방법?
// Starting point:
public interface Base {
void Foo();
}
public interface Derived extends Base {
}
Base
메소드를 Base
인터페이스에서 Derived
인터페이스로 이동하기위한 것입니다.
// Desired end-point:
public interface Base {
}
public interface Derived extends Base {
void Foo();
}
이 변경을 단계적으로 수행하기 위해 Base
인터페이스의 하위 호환성을 유지하는 것이 바람직합니다. 이 코드를 컴파일하면 Derived
에 대한 컴파일러 경고가 나타납니다.
[deprecation]이 코드를 컴파일하면 다음과 같은 오류 메시지가 나타납니다. [] 이상하게도
Base
의 설명서에서@deprecated
를 제거했지만 (@Deprecated로 남겨두면)이 경고가 사라집니다.이 경고를받는 것이 맞습니까? 그렇다면 어떻게 해결할 수 있습니까?
이 경고는
Derived.Foo
이 "사용"Base.Foo
(더 이상 사용되지 않음)임을 알리는 것으로 보입니다. 그러나Derived.Foo
가 비추천Base.Foo
을 "사용"하는 유일한 용량은 그것을 오버라이드하는 것입니다. 파생 된 메소드에서 비추천 인터페이스 메소드를 대체 할 수 없다는 말이 있습니다.이 경우, 경고를 표시하지 않으려면
@SuppressWarnings("deprecation")
를@SuppressWarnings("deprecation")
로 장식해야합니까?
어떤 Java 버전을 사용하고 있습니까? 나는 이것이 어떤 시점에서 버그로 여겨졌는지, 아마도 고정되어 있다고 생각한 것 같다. 그러나 나는 이것을 정확하게 기억할 수 없다. 나는 네가 의미하는 것을 정확히 보았다. –