Я столкнулся со странным поведением.Следующий код:
private void setSegments(Set<Long> segments) {
this.segments = ImmutableSet.copyOf(segments);
}
throws
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet;
Я проверил содержание класса с помощью отражения, добавив в метод следующий фрагмент кода:
try {
Class c = ImmutableSet.class;
Method[] m = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++) {
LOGGER.error("method: " + m[i].toString());
}
} catch (Throwable e) {
System.err.println(e);
}
Что, средивсе остальные методы, распечатанные
Segments:method: public static com.google.common.collect.ImmutableSet com.google.common.collect.ImmutableSet.copyOf(java.util.Iterator)
Segments:method: public static com.google.common.collect.ImmutableSet com.google.common.collect.ImmutableSet.copyOf(java.lang.Iterable)
Я не понимаю, почему метод с параметром Iterable не вызывается.В конце концов, Set расширяет коллекцию, которая реализует Iterable.
спасибо за любые идеи