Я ищу способ определить, будет ли заказ (или, возможно, даже любой Итерабельный) заказываться по его контракту класса.Определение того, заказывается ли Java Iterable по контракту
Я уже знаю метод Guava: Ordering.natural().isOrdered(myCollection)
Но этот метод не имеет отношения к моим потребностям, поскольку он проверяет, упорядочены ли значения внутри коллекции. Это не то, что мне нужно, чтобы определить, что я хочу, чтобы это isSorted
метод, который будет вести себя так:
isSorted(new HashSet()) -> false
isSorted(new ArrayList()) -> true
и т.д ...
То, что я смотрю на будет, как правило, реализуется путем проверки класс коллекции и сравнивая ее с какой-то ссылочной таблицей коллекций, в контракте которой указано, что они упорядочены, и возвращают только истину для этих.
Знаете ли вы, что что-то подобное уже существует в какой-то библиотеке?
'ArrayList' заказано, не отсортировано. –
Как бы этот класс (или метод) знал, если он был заказан, не глядя ни на один. JavaDoc для этого класса 2. Исходный код этого класса (и его анализ) или 3. Уже есть карта значений, хранящихся как член (который не будет работать слишком хорошо с моей недавно определенной анонимной «Collection»)? –
Да, я действительно имею в виду, что это «коллекция из класса, заказанного по контракту»? Если бы я должен был реализовать такой метод, я бы определенно собирал таблицу «доверенных» классов, упорядоченных по контракту, и возвращал true только для этих классов (и, конечно же, указывал точные методы, которые включены в ссылку таблица как контракт этого метода isOrdered) –