#java
Доброго времени суток. Имеется пример метода, сортирующего список, в рамках которого используются статические методы sort() и reverseOrder(). Они записаны со ссылкой на класс Collections: Collections.sort(copy, Collections.reverseOrder()); Если метод sort() встречается во многих классах и без уточняющей ссылки на Collections не обойтись, то метод reverseOrder() представлен лишь в одном экземпляре. Почему, в таком случае, запись: Collections.sort(copy, reverseOrder()); будет неверна? Благодарю.
Ответы
Ответ 1
Данная проблема решается статическим импортированием: import static java.util.Collections.reverseOrder; В противном случае, необходимо при компиляции обойти все классы в classpath и проверить наличие там данной функции.Ответ 2
Касательно Вашего вопроса я вижу несколько проблем, на которые компилятор может наткнуться: во-первых это поиск по всем классам (довольно тяжеловесная задача, учитывая сколько раз её придется выполнять), во-вторых это разрушение области видимости (представьте, вы объявили переменную, которая называется так же, как один из методов в каком-либо из классов, как тогда поступать компилятору?). Вдобавок Вы можете просто опечататься и вызывать метод класса, о котором и не подозревали... Думаю, проблем можно придумать много, в то время когда польза минимальна (я бы даже сказал, что вреда такой фичей привнесено было бы гораздо больше).
Комментариев нет:
Отправить комментарий