ваш класс customComparator должен реализовать java.util.Comparator для использования. он также должен переопределять compare () AND equals ()
compare () должен ответить на вопрос: Является ли объект 1 меньше, равным или большим, чем объект 2?
full docs: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html
Я подозреваю, что существуют некоторые практические причины и некоторые теоретические причины:
существует большой с точки зрения того, почему он не может поддерживаться теперь хотя:
я соглашаюсь, что было бы полезно иметь своего рода constness индикатор, но я не вижу, что он происходит, я боюсь.
РЕДАКТИРОВАНИЕ: был аргумент об этой ярости в сообществе Java целую вечность. Существует слишком много комментария относительно соответствующая ошибка , который можно найти интересным.
Как Jon, уже застрахованный (конечно), правильность константы не так проста, как это могло бы появиться. C++ делает это один путь. D делает это другой (возможно более корректный / полезный) путь. C# флиртует с ним, но не делает ничего более отважного, поскольку Вы обнаружили (и вероятно никогда хорошо как Jon, хорошо застрахованный снова).
Тем не менее я полагаю, что многие "теоретические причины Jon" разрешены в модели D.
В D (2.0), константа работает во многом как C++, за исключением того, что это является полностью переходным (таким образом, константа относилась к указателю, будет относиться к объекту, указал, любые члены того объекта, любые указатели, которые возражают, имели, объекты, на которые они указали и т.д.) - но это явно, который это только применяют от переменной, что Вы объявили константу (поэтому, если у Вас уже есть объект неконстанты и Вы берете указатель константы на него, переменная неконстанты может все еще видоизменить состояние).
D представляет другое ключевое слово - инвариант - который относится к самому объекту. Это означает, что ничто никогда не может изменять состояние, однажды инициализированное.
красота этого расположения состоит в том, что метод константы может принять и константу и инвариантные объекты. Так как инвариантные объекты являются хлебом с маслом функционального мира, и метод константы может быть отмечен как "чистый" в функциональном смысле - даже при том, что он может использоваться с изменяемыми объектами.
Возвращение на ходу - я думаю, что имеет место, что мы только теперь (последняя половина naughties) понимающий, как лучше всего использовать константу (и инвариант). .NET был первоначально определен, когда вещи были более туманными, не соглашался на слишком много - и теперь слишком поздно для модифицирования.
я хотел бы видеть, что порт D работает на.Net VM, хотя :-)
Вопрос, нам нужен constness в C#?
я вполне уверен, что Дрожание знает, что данный метод не собирается влиять на сам объект и выполняет соответствующую оптимизацию автоволшебно. (возможно, путем испускания call
вместо callvirt
?)
я не уверен, что нам нужны они, так как большинство профессионалов constness является связанной производительностью, Вы заканчиваете в точке 1.
, Помимо которого, C# имеет readonly
ключевое слово.
Я не был бы удивлен, были ли неизменные типы добавлены к будущей версии C#. Уже были перемещения в том направлении с C# 3.0.
Анонимные типы, например, неизменны.
я думаю, в результате расширений, разработанных для охвата параллелизма, Вы, вероятно, будете видеть, что неизменность открывается все больше.
г-н Heljsberg , разработчик языка C# уже ответил на этот вопрос: