Situation
我有一个OSGi项目,我正在尝试迁移到Java8。在我的项目中,我依赖于第三方库,而这些库是我“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中如此简单和广泛使用的部分需要(相对地)进行大量的迁移。我是错过了什么,还是真的不可避免?
发布于 2014-05-01 12:07:18
我遇到了类似于thobens的类似问题:更新了我的开普勒4.2.3以使用Java 8,将JAVA 8设置为新的JRE,等等。与thobens一样,我通过eclipse请求实现所有未实现的方法,在比较器上出现了一个错误。
最后,这是由旧编译器编译级别(1.7)引起的--切换到1.8解决了这个问题。
发布于 2015-10-23 19:12:53
这是因为对于java 7比较器并没有所有其他方法,当您将Eclipse更新为Java1.8时,需要使用比较器来解决这个问题,只需将编译器更改为Java1.7(属性- Java编译器- JDK法规),就可以刷新您的项目。希望能帮上忙
https://stackoverflow.com/questions/22572762
复制相似问题