При реализации сопоставимого интерфейса для класса мы переопределяем метод compareTo?
Если да, кто изначально определил метод compareTo, который мы его переопределяем?
Моя догадка заключается в том, что мы не переопределяем в том смысле, что не было другой реализации до того, как мы ее переопределяем, а добавляем @override, потому что мы реализуем интерфейс. Во всяком случае сегодня меня спросили об этом конкретно, и я не был уверен.Java Comprable переопределяет или не переопределяет compareTo?
ответ
Ваша догадка верна, аннотация @Override
может означать, что вы намерены переопределить метод из суперкласса или что вы собираетесь реализовать метод из интерфейса.
И это логично, чтобы немного удивить это использование аннотации @Override
. Вероятно, для читателя было бы яснее, если бы была аннотация для @Implement
, чтобы указать, что вы намеревались реализовать метод интерфейса.
Но тогда возникла бы путаница в переопределении абстрактного метода из суперкласса; какую аннотацию следует использовать в этом случае. Чтобы все было просто, для этой цели есть только одна аннотация: @Override
.
Спасибо. Это действительно очистило мой разум. Очень хорошо объяснено. – apadana
- 1. Метод Java не переопределяет
- 2. Java дженерик метод переопределяет
- 3. Java переопределяет ссылку
- 4. HashMap переопределяет следующеезначение Java
- 5. переопределяет Java xml
- 6. Java переопределяет метод динамически
- 7. Java использует или переопределяет устаревший API
- 8. java использует или переопределяет устаревшую ошибку API
- 9. Java-программа использует или переопределяет устаревший API?
- 10. toString() не переопределяет
- 11. не переопределяет метод error
- 12. ANDROID_HOME не переопределяет local.properties
- 13. Java не абстрактно и не переопределяет ошибку
- 14. Использует или переопределяет устаревший API
- 15. Java метод выполнения переопределяет правила
- 16. Map putAll переопределяет или добавляет?
- 17. Не переопределяет функцию JQuery
- 18. Gemfile.lock не переопределяет Gemfile
- 19. HandleUnauthorizedRequest не переопределяет
- 20. Django не переопределяет шаблон?
- 21. Java ConcurrentHashMap переопределяет все записи
- 22. Почему строка в java не переопределяет readObject?
- 23. Переопределяет тип полиморфизма?
- 24. CarrierWave не переопределяет предыдущие страницы
- 25. jQuery: Почему не переопределяет доллар «$»?
- 26. Spring @PropertySources значение не переопределяет
- 27. Modelmanager не переопределяет метод сохранения
- 28. numberOfRowsInSection не переопределяет Атрибуты Инспектор
- 29. ProxyPass не переопределяет .htaccess mod_rewrite
- 30. Быстрое наблюдение свойства не переопределяет
Интерфейс ['Comparable'] (http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html) определяет контракт, который требуется реализовать, который включает в себя' compareTo'. Аннотирование '@ Override' - это проверка времени компиляции, чтобы убедиться, что ваши намерения (метода, который, по вашему мнению, вы переопределяете) соответствуют действительности (с тем, что можно переопределить). Например, если вы случайно вызываете метод 'compareto', вы получите две ошибки, одна из которых не соответствует контрактным требованиям интерфейса, а другая, поскольку компилятор не может найти именованный метод в иерархии классов. – MadProgrammer
. Вы задаете вопрос: не ясно! Вы хотите знать, кто проектировал API? Или что такое использование @override? –
Добавив @override, мы переопределяем реализацию по умолчанию compareTo? Была ли такая реализация по умолчанию в классе Object (родительский)? – apadana