Я голосовал бы за OMake. Это фиксирует, все жалуется, что я имел с GNU, сделайте:
Функциональная Java имеет Наборы, списки и другие интересные абстракции.
Вам не нужен scala. Просто передайте свою коллекцию в:
java.util.Collections.unmodifiableCollection(/* Collection<? extends T> c */);
java.util.Collections.unmodifiableSet(Set s);
java.util.Collections.unmodifiableMap(Map m);
java.util.Collections.unmodifiableList(List l);
Я только что видел это из другого вопроса SO:
Google ImmutableSet
из документов:
В отличие от Collections.unmodifiableSet (java.util.Set), что является видом отдельного коллекция, которая все еще может меняться, экземпляр этого класса содержит его собственные личные данные и никогда не будут менять. Этот класс удобен для общедоступные статические конечные наборы ("константа наборы "), а также позволяет легко создавать «защитная копия» комплекта, предоставленного ваш класс вызывающим абонентом.
отредактировано с целью включения комментария.
Похоже, вы ищете Scala . Он компилируется в .class, так что этого достаточно, правда?
Строки и числа являются неизменяемыми функционально, но большинство коллекций - нет (неизменяемые коллекции вызывают исключения при добавлении, удалении и т. Д.). CopyOnWriteArrayList
и CopyOnWriteArraySet
являются наиболее близкими в этом смысле.
Если вас интересует работа с коллекциями в функциональном стиле, обратите внимание на lambdaj
Что ж, есть два возможных подхода к "изменению" неизменяемой коллекции:
Сделайте копию, которая включает "изменение"
Создайте новый, другой объект, состоящий из ссылки на исходный объект и ссылки на описание изменения.
Clojure использует второй подход, так что становится довольно быстро создавать множество братьев и сестер исходной коллекции с небольшими исправлениями для каждого, с разумной памятью требования. Но большая часть кода Java обычно выбирает первый вариант.
Как бы то ни было, Google создал несколько коллекций, поддерживающих программирование в функциональном стиле: http://code.google.com/p/google -collections / , но я не изучал их подробно.
Всегда приятно видеть подключенные коллекции Google, но нет, у нас этого нет. Я не знаю такой библиотеки Java. Внутри Google мы реализовали некоторые функциональные структуры списков, и знаете что? Никто ими не пользуется. Так что в ближайшее время они вряд ли станут открытыми.