【问题标题】:Static methods added in interfaces in java 1.8 [closed]java 1.8接口中添加的静态方法[关闭]
【发布时间】:2014-09-19 12:38:19
【问题描述】:

正如我们所知,在 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中的静态方法需要定义而不仅仅是声明,我一直认为接口是一个纯抽象类我认为这就是为什么定义方法的想法对我来说似乎很奇怪。谢谢您的帮助 ! .

【问题讨论】:

  • 你还没有展示出真正的问题是什么...
  • 我认为这是个好问题。
  • 你试过出现哪个巨大的错误
  • 静态接口方法必须定义一个尸体。
  • 我在 1.8 方面没有太多经验,但 public static void myMethod(); 一定是语法错误。必须定义静态方法,而不仅仅是声明。

标签: java static language-features


【解决方案1】:

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

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

在 Java 8 之前,可以在 接口,通常的做法是把这些方法放在一起 实用程序类。例如,java.util.Collections 类是一个 java.util.Collection 接口的伴侣,并声明静态 在相关 Java 中更合适的方法 集合框架接口。您不再需要提供您的 自己的配套实用程序类。相反,您可以放置​​静态方法 在适当的界面中,这是一个很好的习惯。

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

【讨论】:

  • 谢谢!理解这个概念
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多