Лучший lib Функтора Java: JGA, функтор свободного городского населения, манго или …?

obj.getClass() вернет класс времени выполнения объекта, то есть он проверит во время выполнения, на что указывает ссылка Object.

Это упомянуто в документе Java метода getClass():

Возвращает класс времени выполнения этого объекта

blockquote>

как простой тест, который вы можете убедиться сами, что getClass проверяет тип времени выполнения объекта:

public static void main(String[] args) {
    String s = "hello";
    test(s);
}
public static void test(Object o){
    System.out.println(o.getClass());
}

Здесь вывод будет ссылаться на класс String, хотя ссылочный тип во время компиляции is Object:

class java.lang.String

Таким образом, в вашем методе false не будет возвращено, если экземпляр Person передан методу equals. Но если это не экземпляр Person, тогда getClass() != obj.getClass() будет true и equals выйдет с false в качестве возвращаемого значения.

7
задан StaxMan 16 March 2009 в 18:09
поделиться

4 ответа

Google Collections Library обеспечивает a Function интерфейс, который подобен (хотя, вероятно, не как подробно).

3
ответ дан 6 December 2019 в 11:53
поделиться

Mango

Предоставляет интерфейсы для функций с 0, 1 и 2 аргументами. Использует дженерики Java. Хороший набор алгоритмов для работы с функциями.

JGA

Предоставляет классы для 0, 1, 2 и произвольного числа функций аргументов. Объекты домена делят их на подклассы. Использует дженерики Java. Обширный набор алгоритмов. Включает JFXG (Java Functor eXpression Grammar) - анализируемый язык, предназначенный для упрощения создания произвольно сложных функторов. Предоставляет несколько алгоритмов для работы с функциями.

Функтор Apache Commons

Предоставляет интерфейсы для функций аргументов 0, 1 и 2, а также 0, Процедуры с 1 и 2 аргументами (которые не возвращают значения). Использует дженерики Java. Хороший набор алгоритмов.

Google Guava (ранее был коллекцией Google)

Предоставляет интерфейсы функций и предикатов для функций с одним аргументом. Использует дженерики Java. Предоставляет только метод compose для объединения функций. Довольно простой.

FunctionalJ

Предоставляет интерфейсы и классы для 0, 1, 2 и произвольного числа функций аргументов. Использует дженерики Java. Существующие методы можно превратить в функции с помощью предоставленных классов отражения функций.

FunctionalJ

Предоставляет интерфейсы и классы для 0, 1, 2 и произвольного числа функций аргументов. Использует дженерики Java. Существующие методы можно превратить в функции с помощью предоставленных классов отражения функций.

FunctionalJ

Предоставляет интерфейсы и классы для 0, 1, 2 и произвольного числа функций аргументов. Использует дженерики Java. Существующие методы можно превратить в функции с помощью предоставленных классов отражения функций.

8
ответ дан 6 December 2019 в 11:53
поделиться

swensen.functional, http://www.codeproject.com/KB/java/ FunctionalJava.aspx , Yours Truly.

Предоставляет универсальные интерфейсы с одним методом, инкапсулирующие функции аргументов от 0 до 5 (FuncX) и процедуры (ActionX). Также включает функтор Predicate (абстрактный класс, реализующий Func2 ) и три других, разработанных для совместимости с устаревшими функторами Comparator, Runnable и Callable. И чтобы сделать все это полезным, неизменяемый тип Iterable (создаваемый из всех массивов и Iterables) с цепочкой методов, Против: Новое, еще не испытанное в бою.

2
ответ дан 6 December 2019 в 11:53
поделиться

Надеюсь, я никого не обижу, говоря, что объект функции не является функтором. Найдите функтор в Википедии. И, пожалуйста, перестаньте злоупотреблять этим термином.

4
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

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