首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java 8中使用Java 7比较器

在Java 8中使用Java 7比较器
EN

Stack Overflow用户
提问于 2014-03-22 02:38:29
回答 2查看 7.4K关注 0票数 17

Situation

我有一个OSGi项目,我正在尝试迁移到Java8。在我的项目中,我依赖于第三方库,而这些库是我“OSGi化”的(只需添加MANIFEST.MF文件并将元数据放入其中)。这些库是从只读SVN存储库中签出的,因此我可以在需要时签出更新,因此我不想做任何其他更改,除非在MANIFEST.MF文件中,因为我不能提交它们。

问题

但是,这些库使用了许多匿名比较器,如:

代码语言:javascript
复制
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中如此简单和广泛使用的部分需要(相对地)进行大量的迁移。我是错过了什么,还是真的不可避免?

EN

回答 2

Stack Overflow用户

发布于 2014-05-01 12:07:18

我遇到了类似于thobens的类似问题:更新了我的开普勒4.2.3以使用Java 8,将JAVA 8设置为新的JRE,等等。与thobens一样,我通过eclipse请求实现所有未实现的方法,在比较器上出现了一个错误。

最后,这是由旧编译器编译级别(1.7)引起的--切换到1.8解决了这个问题。

票数 22
EN

Stack Overflow用户

发布于 2015-10-23 19:12:53

这是因为对于java 7比较器并没有所有其他方法,当您将Eclipse更新为Java1.8时,需要使用比较器来解决这个问题,只需将编译器更改为Java1.7(属性- Java编译器- JDK法规),就可以刷新您的项目。希望能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22572762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档