주석을 구현 클래스 메소드에 넣으시겠습니까? 그것은 어떤 목적을 위해 봉사 하는가? 잘못 입력했거나 가지고 있지 않으면 컴파일 오류입니다.@Override on Implementation
답변
구현 된 인터페이스에 정의 된 메소드에 주석 달기를 요청하거나 수퍼 클래스에서 abstract
으로 가정합니다. 이 경우 메소드 서명의 오타가 @Override
의 유무에 관계없이 컴파일 오류가 발생합니다. 그러나, 주석은 인터페이스를 구현하는 것으로 메소드를 명시 적으로 표시하는 데 여전히 도움이된다고 생각합니다. 인터페이스가 변경된 경우 모든 구현 방법에 대해 @Override
개의 주석을 사용하면 어떤 메소드 서명이 변경되어 업데이트해야하는지 정확히 알 수 있습니다.
그의 대답에서 언급 한 mklhmnn과 같이 인터페이스에서 메소드가 제거되면 구현 클래스의 @Override
주석은 컴파일 오류를 발생시킵니다. 주석이 없으면 인터페이스에서 메소드가 제거되어 미묘한 버그가 발생할 수 있음을 알지 못할 수도 있습니다.
오히려 유용합니다. @Override
으로 주석 된 메소드가 수퍼 클래스의 메소드를 실제로 대체하지 않으면 컴파일 오류가 발생합니다. 당신이 클래스 Foo
을 가지고있는 경우
예를 들어, 당신은 방법을 만들 :
@Override
public boolean equals (Foo foo) { ... }
는 당신은 equals (Foo foo)
이 푸의 슈퍼 클래스의 모든 메소드를 오버라이드 (override)하지 않는 것을 당신에게 말할 것이다 컴파일시 오류가 발생합니다 .
IDE의 일부 코드 생성 기능을 사용하면 최신 IDE (예 : IntelliJ)가이 주석을 자동으로 추가합니다.
메소드를 재정의 할 때이 주석을 사용할 필요는 없지만 오류를 방지하는 데 도움이됩니다. @Override
으로 표시된 메소드가 수퍼 클래스 중 하나의 메소드를 올바르게 대체하지 못하면 컴파일러는 오류를 생성합니다.
더 빨리 실패하면 나중에 오류를 잡으십시오. 나중에 hashcode()
이라고 써 있지만 나중에 hashCode()
이라고 써야합니다. @Override
은 나중에 문제를 빨리 발견하는 데 도움이됩니다.
비슷한 질문입니다. should-i-add-an-override-annotation-when-implementing-abstract-methods?
when-do-you-use-javas-override-annotation-and-why?
- 또한 this 참조.
메소드를 @Override로 표시하면 API가 변경되면 컴파일 오류가 발생하므로 더 이상 수퍼 메소드를 사용할 수 없습니다. 어쩌면 그것이 이유 일 것입니다.
사용하지 않았고 문제가 발생하지 않았습니다. 왜 갑자기 모든 사람들이 그것을 사용하기 시작했는지 모르겠습니다 (이클립스도 사용하지 않습니다).
리팩터링은 문제가되지 않으며 IDE가 확인합니다.
@Override는 코드의 가독성을 높이는 데 도움이 될 수 있습니다. 그래야 컴파일러가 아니라 인간의 존재를 분명히 알 수 있습니다. 내 IDE가 그래픽 방식으로 재정의 메서드를 표시하지만, 그다지 눈에 띄는 것은 아니지만 요점은 도구가 자동으로 우리를 위해 할 수있는 것입니다.
Javadoc이 다른 곳에 있다는 사실을 알리는 것이 좋다고 생각합니다. 잊지 않았습니까?
- 1. safe_ptr implementation
- 2. removeEldestEntry override
- 3. IQueryProvider override
- 4. Override DateTime.Now
- 5. @override annotation
- 6. Override DateTime.MinValue
- 7. OnCacheAuthorization override
- 8. @Override 주석
- 9. Digraph arc list implementation
- 10. Voip conference implementation
- 11. ArrayList.Sort() with IComparable implementation
- 12. jruby 1.8.2 (native implementation)
- 13. jQuery .support() implementation
- 14. Python : Best Dictionary implementation
- 15. Grails 플러그인 bean의 override 메소드
- 16. while while loop implementation in android
- 17. Koch Snowflake Implementation in Haskell
- 18. C# Visa 3d Secure Implementation
- 19. Facebook Like button - Yahoo Implementation
- 20. DWT in Verilog (FPGA Implementation)
- 21. http 1.1 pipeling client implementation
- 22. Override javascript Window.opener
- 23. ResourceManager override GetResourceFileName
- 24. YUI Treeview (override labelClick)
- 25. SuggestBox override addSelectionHandler
- 26. C# : PictureBox override 너비
- 27. nhibernate softdelete where override
- 28. Override EditorForModel Template
- 29. Django : Override RelatedFieldWidgetWrapper
- 30. CSS에서 @group 및 @override?
나는 equals (Object)와 equals (Blah)가 @Override가 주요한 (그러나 발견하기 힘든) 프로그래머 오류를 방지하는 방법에 대한 가장 좋은 예라고 생각합니다. – Thien