在java 1.8中的接口中添加静态方法

时间:2014-09-19 12:38:20

标签: java static language-features

我们知道在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 我认为这就是为什么定义方法的想法对我来说似乎很奇怪。谢谢您的帮助 ! 。

2 个答案:

答案 0 :(得分:1)

谈论“需要添加什么”静态方法:

引自http://www.informit.com/articles/article.aspx?p=2191423

  

在Java 8之前,可以在其中声明静态方法   接口,通常的做法是将这些方法放在同伴中   实用班。例如,java.util.Collections类是一个   java.util.Collection接口的伴侣,并声明static   在相关Java中更合适的方法   集合框架接口。你不再需要提供你的   自己的伴侣工具类。相反,您可以放置​​静态方法   在适当的界面,这是一个培养的好习惯。

接口中的静态方法也适用于提供实用程序方法,如空检查,集合排序等。重要的是,它通过拒绝实现类来覆盖它来提供安全性。

答案 1 :(得分:0)

这里没有问题,静态方法由类拥有,而不是它的成员,所以这里唯一的错误就是你没有定义方法itselt(刚刚声明它,静态方法不允许)。