Что такое @Override для в Java? [дубликат]

Я собирался предложить изменение структуры с кучи (k, v) на кучу k и словарь {k:[v]}. Это превратит ваш код в:

k = heap[0]
return [(k,v) for v in hash[k]]

С:

hash = defaultdict(list)
heap = []

heappush(heap, (k, v)) станет:

heappush(heap, k)
hash[k].append(v)

heappop(heap) станет: [1112 ]

k = heappop(heap)
v = hash[k].pop()
58
задан user65374 10 April 2018 в 22:41
поделиться

4 ответа

Как Вы описываете, @Override создает проверку времени компиляции, что метод переопределяется. Это очень полезно, чтобы удостовериться, что у Вас нет глупой проблемы подписи при попытке переопределить.

, Например, я видел следующую ошибку:

public class Foo {
  private String id;
  public boolean equals(Foo f) { return id.equals(f.id);}
}

Этот класс компиляции, как записано, но добавление тега @Override к равняется методу, вызовет ошибку компиляции, поскольку это не переопределяет, равняется методу на Объекте. Это - простая ошибка, но она может выйти из глаза даже закаленного разработчика

51
ответ дан Rob Di Marco 24 November 2019 в 19:02
поделиться

Это не только осуществляет проверку компилятора - хотя этого было бы достаточно для создания этого полезным; это также документирует намерение разработчика.

, Например, если Вы переопределяете метод, но не используете его нигде от самого типа, кто-то приходящий к коду позже может задаться вопросом, с какой стати это там. Аннотация объясняет свою цель.

23
ответ дан Jon Skeet 24 November 2019 в 19:02
поделиться

нет - за исключением того, что это также улучшает удобочитаемость (т.е. в дополнение к любому индикатору Ваше использование IDE, это помогает определить это, метод переопределяет объявление в суперклассе)

2
ответ дан Rahel Lüthy 24 November 2019 в 19:02
поделиться

Нет, Вы в значительной степени закрепили его.

@Override говорит компилятор Ваш намерение : при метках метода @Override Вы намеревались переопределить что-то от суперкласса (или интерфейс в Java 6). Хороший IDE услужливо отметит любой метод, который переопределяет метод без @Override, таким образом, комбинация этих двух поможет гарантировать, что Вы делаете то, что Вы пытаетесь.

11
ответ дан Michael Myers 24 November 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: