在Java中使用Java 7比较器8

情况

我有一个OSGi项目,我试图迁移到Java 8.在我的项目中,我依赖于第三方库,“OSGi”(只需添加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接口有一堆需要实现的新方法(这当然导致编译错误)。但是我真的希望避免实现它们或切换到Lambda表达式,因为修改原始源可能会在每次检出较新的修订版本时导致冲突。

Java用于向后兼容性,我不知道为什么这样一个简单而广泛使用的API部分需要如此(相对)的迁移力。我错过了什么,还是真的不可避免?

最佳答案
Java 8版本的Comparator中的新方法是默认方法(Java 8中的新功能),不仅包括方法签名,还包括默认实现。因此,较早的Comparator实现应该在Java 8上工作正常。

如果有什么不起作用,请告诉我们您正在尝试什么以及错误信息。

转载注明原文:在Java中使用Java 7比较器8 - 代码日志