我有一个同事,他需要一种可供两个班级使用的方法。
他决定创建一个由这些类实现的新接口。
接口只有一种方法default doThis(String parameter)
它没有任何其他接口方法,没有指示将其他方法添加到此接口。
我认为这是接口的不正确用法,应该以其他方式完成。即,也许是一个类,其类具有允许其他类通过使用该对象来使用它的方法。
有经验的人有什么意见要分享吗?
我可以根据您的评论进行更详细的说明。
接口中的默认方法*)可以有一个默认实现*)可以被实现类覆盖]
是自JAVA8以来的正确用法。我们可以在界面中使用默认方法,也可以使用抽象方法]
理想情况下,您将把方法doThis()
放在两个类都扩展的抽象类中。但是,如果您需要实现多重继承,则可以在此处使用接口。
具有可静态调用的静态方法doThis()
的类也将起作用。
这完全取决于您如何组织imo。
在Java 8中,如果任何一组api具有较长的继承层次结构,并且我们想引入一种在所有较低层的类中都应可用的方法,则在接口中引入default关键字。
因此Java 8中的stream()方法在Collection接口中作为默认方法引入,并且最终在所有基础类中都可用。
就您的情况而言,如果我按您的话说,那么如果您是一个新的开发人员,则应该使用接口->抽象类->实际实现类。
[仅当您使用的是较旧的开发设置,并且已经有通过接口实现的类时,否则可能是在接口中使用默认方法的理想方案。