我们知道在java 1.8接口中允许使用静态方法,我看到了一些答案,如static methods defined in interface from jdk 1 8 why did they need to do so
但我不满意。
此外,我认为这可能会导致以下问题:
public interface MyInterface{
public static void myMethod();
}
class MyClass{
MyInterface.myMethod(); // since myMethod is static but a huge error is waiting for us here ?
}
但是我仍然认为有一种方法可以解决这个问题,因为专业人士增加了,所以任何人都可以解释 oracle如何解决这个问题以及需要什么添加这个?
谢谢你。
<小时/> 我没有使用java 1.8所以我从来不知道java 中的静态方法需要定义而不仅仅是声明,我一直认为接口是 Pure Abstract Class 我认为这就是为什么定义方法的想法对我来说似乎很奇怪。谢谢您的帮助 ! 。
答案 0 :(得分:1)
谈论“需要添加什么”静态方法:
引自http://www.informit.com/articles/article.aspx?p=2191423
在Java 8之前,可以在其中声明静态方法 接口,通常的做法是将这些方法放在同伴中 实用班。例如,java.util.Collections类是一个 java.util.Collection接口的伴侣,并声明static 在相关Java中更合适的方法 集合框架接口。你不再需要提供你的 自己的伴侣工具类。相反,您可以放置静态方法 在适当的界面,这是一个培养的好习惯。
接口中的静态方法也适用于提供实用程序方法,如空检查,集合排序等。重要的是,它通过拒绝实现类来覆盖它来提供安全性。
答案 1 :(得分:0)
这里没有问题,静态方法由类拥有,而不是它的成员,所以这里唯一的错误就是你没有定义方法itselt(刚刚声明它,静态方法不允许)。