你好!
我是一名初学者,目前正在学习Java语言和libgdx API。今天,我一直在研究接口及其用法。为了更好地理解该主题,我寻找了libgdx的接口及其一些实现。我发现,有一些抽象类称为“适配器”,它们基本上实现了一个接口,从而使希望使用该接口的用户更方便地扩展适配器类,从而避免了必须从接口实现不需要的方法。界面(请参见ApplicationAdapter,ScreenAdapter和InputAdapter)。
我的问题是:由于JDK 8引入了默认方法实现,现在是否不需要libgdx的适配器类?如果这些适配器实现的接口中的方法具有默认实现, (甚至可能是一个空的主体),那么就没有理由使用适配器了。
请注意,通过提出这个问题,我绝不想批评libgdx的开发人员。我也知道libgdx是在Java允许默认方法实现之前开发的。我只是一个初学者,试图更好地理解接口以及如何正确使用它们。谢谢!
答案 0 :(得分:1)
这是见仁见智。
是的,使用Java 8的默认接口方法,可以将适配器类实现的便利性直接包含在接口中。
但是 libGDX 的作者也可以一起排除所有接口,而只是使用了适配器类。或者他们可以使用所有方法的具体实现使适配器类抽象化。
因为适配器类只是为了方便起见(例如,请参见ScreenAdapter
javadoc:
{@link Screen}的便捷实施。以此为出发点,只覆盖您的需求。
),可以通过多种方法来实现。我认为接口的默认方法主要是为了在不破坏现有实现的情况下使用更多方法扩展接口。从Interface Default Methods看下面:
默认方法使您可以向库的接口添加新功能,并确保与为这些接口的较早版本编写的代码二进制兼容。
但是,它们也可以用于提供便捷的方法。