@Dmitry07

Почему для static-метода нельзя опустить имя класса?

Доброго времени суток.

Имеется пример метода, сортирующего список, в рамках которого используются статические методы sort() и reverseOrder(). Они записаны со ссылкой на класс Collections:

Collections.sort(copy, Collections.reverseOrder());


Если метод sort() встречается во многих классах и без уточняющей ссылки на Collections не обойтись, то метод reverseOrder() представлен лишь в одном экземпляре. Почему, в таком случае, запись:

Collections.sort(copy, reverseOrder());

будет неверна?

Благодарю.
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
Sanan07
@Sanan07
Писатель-прозаик
Потому, что вы импортировали пакет java.util в котором содержится класс Collections и при его использовании вы указываете название всего класса. Если хотите сделать как вы сказали, то вам надо использовать статитеское импортирование. Т.е. добавить import static java.util.Collections.reverseOrder;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TheKnight
@TheKnight
Программист
Рекомендую прочитать про static import. Думается мне, это вам поможет для конкретно вашей задачи.

Если по существу - для имплементации вашей хотелки необходимо при компиляции обойти все классы в classpath и проверить наличие там данной функции и только после этого записать в байт-код вызов конкретной функции.
Кроме того, непонятно, как работать с коллизиями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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