Существует ли Java 1.5, эквивалентный Предикату <T> методы в .NET?

Не уверен насчет C ++ API, но с помощью C API вы можете подписаться на темы с опцией сокета ZMQ_SUBSCRIBE . Я подозреваю, что API C ++ имеет аналогичную функцию.

Это просто фильтрует сообщения, начинающиеся с того же текста, что и текст темы. Вы можете использовать Pub-Sub Message Envelopes для более надежного решения. Я могу представить, что Python API скрывает эти детали реализации.

8
задан Jonik 5 May 2009 в 21:00
поделиться

3 ответа

Предикаты предоставлены в библиотеке Google Collections .

12
ответ дан 5 December 2019 в 07:37
поделиться

Функциональная Java предоставляет функции первого класса. Предикат выражается как F . Например, вот программа, которая проверяет массив на наличие строки, состоящей из строчных букв.

import fj.F;  
import fj.data.Array;  
import static fj.data.Array.array;
import static fj.function.Strings.matches;

public final class List_exists {  
  public static void main(final String[] args) { 
    final Array<String> a = array("Hello", "There", "how", "ARE", "yOU?");  
    final boolean b = a.exists(matches.f("^[a-z]*$"));  
    System.out.println(b); // true
  }  
}
6
ответ дан 5 December 2019 в 07:37
поделиться

Насколько я знаю, нет. Но у Apache Commons Collections есть что-то вроде этого: Predicate


Edit : Правильно, как отмечено в комментариях, Commons Collections из мира пре-дженериков, поэтому Google Collections ( обновление : Гуава ) кажется явно лучшим вариантом сейчас. Тем не менее, коллекции Commons заслуживают упоминания, поскольку это хорошо известная библиотека, которая делает это, а также чтобы люди знали , почему не использовать ее. :)

Я просто читал больше о Google Collections в этом прекрасном интервью с его основными разработчиками и хотел процитировать немного, который конкретно касается проблемы «Коллекции Google против Apache Commons Collections»:

Что является уникальным в вашем подходе? Чем он отличается, например, от Коллекция Apache Commons?

Кевин: «Хорошо, слава Богу за Apache Commons. Мы все были бы в плохой форме без библиотек, как это. Который сказал, к сожалению, этот конкретный проект застопорился в мире перед дженериками. Они хотят принять дженерики, но они признают, что это будет связано с довольно нетривиально и несовместимо переписать. Пока что, похоже, никто активно вождения такие усилия. В Google мы использовали Java 5 всей компании с весны 2005 года. Библиотека коллекций необразованный был нарушителем нас, потому что мы действительно ненавидим предупреждения компилятора. Я тоже обеспокоен многими местами в что коллекции Apache не делают соответствовать спецификациям Интерфейсы JDK, которые они реализуют. "

[...]

Джаред: «Как предполагает Кевин, наша библиотека это единственная библиотека коллекций, которую я знаю из, вне JDK, построенный с Java 5 особенности: дженерики, перечисления, коварианты типы возврата и т. д. При написании Java 5 код, вы хотите библиотеку коллекций что в полной мере использует язык. Кроме того, мы ставим огромный усилия по созданию библиотеки полный, надежный и соответствующий классы коллекции JDK. наш классы коллекции были намного больше ограничено изначально, но мы постепенно улучшил их за последние два года. Поскольку все использование библиотеки в Google Система контроля источника, у нас было гибкость, чтобы изменить публику интерфейсы. Проект с открытым исходным кодом как коллекция Apache Commons не иметь свободу, чтобы изменить его поведение после первоначального выпуска. Так как мы потеряем эту гибкость однажды Библиотека коллекций Google 1.0 является выпущен, мы хотим получить обратная связь сейчас, чтобы мы могли получить вещи право. "

4
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

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