Ситуация
У меня есть проект OSGi, который я пытаюсь перенести на Java 8. В моем проекте у меня есть зависимости от сторонних библиотек, которые я "OSGi-fied" (просто добавляя файл MANIFEST.MF
и помещая метаданные в Это). Эти библиотеки проверяются из репозиториев SVN только для чтения, поэтому я могу просто проверять обновления с тех пор, когда это необходимо, и поэтому я не хочу делать какие-либо другие изменения, кроме как в файле MANIFEST.MF
, так как я не может зафиксировать их.
Проблема
Однако эти библиотеки используют множество анонимных компараторов, например:
private static final Comparator heightComparator = new Comparator() {
public int compare (Object o1, Object o2) {
return ((Glyph)o1).getHeight() - ((Glyph)o2).getHeight();
}
};
Теперь, по-видимому, интерфейс java.util.Comparator
имеет целую кучу новых методов, которые необходимо реализовать (что, конечно же, приводит к ошибкам компиляции). Но я действительно хочу избежать их реализации или переключиться на лямбда-выражения, потому что изменение исходного источника, скорее всего, приведет к конфликтам каждый раз, когда я проверю более новые версии.
Java, используемая для работы с обратной совместимостью, и мне интересно, почему такая простая и широко используемая часть API требует (относительно) больших усилий для миграции. Я что-то упустил или это действительно неизбежно?