增强Java 8库,同时保持向后兼容性

mik*_*era 8 java backwards-compatibility java-8

我正在用Java开发一个开源库,并希望确保它对Java 8用户来说很方便,并尽可能利用Java 8中的新概念(lambdas等)

同时我绝对需要保持向后兼容性(库必须仍然可以用于使用Java 6或7的人).

我可以采用Java 8有哪些有用的功能,这对于库用户来说是有益的,而不会破坏旧Java版本用户的库兼容性?

til*_*ner 2

我不了解你的图书馆,这个建议可能略有偏差

拉姆达斯:别担心。任何函数式接口都可以使用 Lambda 表达式来实现。

方法引用:与 lambda 相同,它们应该只是可用的。

Streams:如果这适合您的库,您应该使用它们,但保持兼容性在这里比较困难。可以使用第二个库部分来实现向后兼容性,该部分环绕基础库并挂钩到它的公共 API。因此,它可以在不放弃 Java 6/7 的情况下提供额外的糖/功能。

默认方法:无论如何,使用这些!它们是增强现有实现而不破坏现有实现的快速/廉价/好方法。您添加的所有默认方法将自动可用于实现类。然而,这些还需要第二个库部分,因此您应该在基础库中提供基础接口,并从配套库扩展接口。

不要分叉该库,放弃旧的库,因为仍然有许多开发人员无法使用 Java 8,甚至 Java 7。如果您的库适合在 Android 等设备上使用,请保持该兼容性。