我的问题相当理论化:
让我们说我在接口中使用static
和default
方法的Java 8项目。我需要摆脱它们,因为我将代码移植到Java 7(假设它是Android N之前的Android应用程序)。
怎么做?我知道有 Retrolambda插件,我成功使用它。但我在思考"纯粹"通过改变代码完成解决方案。有什么选择?
我知道我可以从接口中删除静态和默认方法,并将它们放入实现此接口的抽象类中,然后在引用该接口的任何地方更改代码(这是Retrolambda所做的,如果我正确理解了该过程) 。
我的老师表示可以通过"在接口定义中适当更改" 而不使用其他课程来完成。但到目前为止,我找不到解决方案。我尝试将实现直接放到目标类中,但这在我的特定项目中引起了一系列麻烦。
任何人都有一些想法或线索我不知道?
答案 0 :(得分:3)
我认为你在Java8项目中实际使用过这样的东西首先是个问题。接口应保持不实现。引入默认方法主要是为了向后兼容API(如果必须将方法添加到以前版本的Interface中,并且您无法强制API的用户更改其代码而您不想创建InterfaceV2)。不适用于"每日使用"。
我认为在移植时,您应该将方法导出到static * Util类。通过这种方式,您可以重复使用它,而不是破坏接口的主要原则。