2014-09-19 73 views
0

正如我们所知,在java 1.8静态方法被允许在接口中,我看到一些答案,如static methods defined in interface from jdk 1 8 why did they need to do so
但我不满意。
此外,我认为这可能会导致类似的问题:在java 1.8中的接口中添加的静态方法

public interface MyInterface{ 
     public static void myMethod(); 
    } 

    class MyClass{ 
    MyInterface.myMethod(); // since myMethod is static but a huge error is waiting for us here ? 
    } 

但我仍然认为这是一个出路的这一点,因为这是加入由专业人员,所以任何人都可以请解释甲骨文如何解决这个问题,有什么需要添加这个?
非常感谢您的光临。


我没有使用过的Java 1.8,所以我从来不知道,在Java静态方法需要定义不仅仅是声明,我一直以为接口作为纯抽象类我想这就是为什么这个想法定义一种方法对我来说似乎很陌生。感谢您的帮助 ! 。

+5

你还没有显示实际问题*是* ... – 2014-09-19 12:41:36

+0

这是一个很好的问题,我认为。 – 2014-09-19 12:42:38

+2

你有没有试过_huge error_发生? – Narmer 2014-09-19 12:43:18

回答

1

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

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

报价之前的Java 8使人们有可能在 接口声明的静态方法,它是常见的做法是地方这些方法在伴侣 实用程序类中。例如,java.util.Collections类是java.util.Collection接口的 伴侣,并声明静态 方法,这些方法在相关Java集合框架接口中更合适。您不再需要提供您的 自己的伴侣实用程序类。相反,您可以将静态方法 置于适当的界面中,这是培养的良好习惯。

此外,在接口的静态方法有利于提供实用的方法,如空检查,收集整理等而且重要的是它通过覆盖它否认实现类提供了安全性。

+0

谢谢!了解这个概念 – user3921830 2014-09-19 13:05:04

0

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