java - 是否可以避免使用 libgdx 的适配器类?

标签 java interface libgdx

您好!

我是一名初级程序员,目前正在学习 Java 语言和 libgdx API。今天,我一直在研究接口(interface) 及其用法。为了更好地理解该主题,我查找了 libgdx 的接口(interface)及其一些实现。我发现有一些称为“适配器”的抽象类基本上实现了一个接口(interface),这使得希望使用该接口(interface)的用户更方便地扩展适配器类,以避免必须从接口(interface)(参见 ApplicationAdapterScreenAdapterInputAdapter)。

我的问题是:由于 JDK 8 引入了默认方法实现,现在不需要 libgdx 的适配器类了吗? 如果这些适配器实现的接口(interface)中的方法有默认实现(甚至可能是一个空体),那么就没有理由使用适配器。

请注意,我问这个问题绝不是想批评 libgdx 的开发者。我也知道 libgdx 是在 Java 允许默认方法实现之前开发的。我只是一个试图更好地理解接口(interface)以及如何正确使用它们的初学者。谢谢!

最佳答案

见仁见智

是的,使用 Java 8 的默认接口(interface)方法,适配器类实现的便利性可以直接包含在接口(interface)中。

但是 libGDX 的作者也可以排除所有接口(interface)而只使用适配器类。或者他们可以将适配器类抽象为所有方法的具体实现。

因为适配器类只是为了方便(例如,请参阅 ScreenAdapter javadoc:

convenience implementation of {@link Screen}. Derive from this and only override what you need.

), 有很多方法可以达到同样的效果。我认为添加接口(interface)的默认方法主要是为了能够在不破坏现有实现的情况下使用更多方法扩展接口(interface)。看下面,来自Interface Default Methods :

Default methods enable you to add new functionality to the interfaces of your libraries and ensure binary compatibility with code written for older versions of those interfaces.

但是,它们也可以用来提供便利的方法。

关于java - 是否可以避免使用 libgdx 的适配器类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51813908/

相关文章:

python - Celery 动态任务/将 Celery 实现隐藏在接口(interface)后面

java - 用于具有 2D 逻辑的 3D 游戏的 Libgdx scene2d?

java - LibGDX - 如何将 LibGDX 中的两个点击监听器中的 Clicked() 方法与 Android 类似?

c# - 如何将 UIHint 属性用于接口(interface)的属性类型?

java - IntelliJ Idea 远程调试器挂起

java - 调用 Hibernate session 刷新

java - setImageResource() 和 attrs 值

c++ - 我如何声明指向共享公共(public)接口(interface)的不同类的指针?

java - Libgdx 切换屏幕

java - 在 Android 上更改评级栏