Java接口–历年来Java 9之旅–默认和私有方法

介绍

Java接口已经比Java版本进行了更多的演变,而Java 8和Java 9则有所发展。在本文中,我们将探讨接口在Java 8之前的样子以及如何在Java 8和Java 9中得到增强。

Java 8之前的接口

接口将具有一个或多个抽象方法,如下所示:

public interface MyInterface {
  public void doSomething();
}

其实现为:

public class MyImplementation implements MyInterface{

  public void doSomething() {
    System.out.println("Done in MyImplementation");
  }

  public static void main(String[] args) {
    MyImplementation impl = new MyImplementation();
    impl.doSomething();
  }

}

Java 8中的接口

在Java 8中,为了增强collections API以支持lambda表达式和新方法,必须增强java.util.Collection接口。 这将意味着破坏实现该接口的所有代码。 因此,他们在界面中提出了一种称为default方法的东西。

因此,现在接口可以具有实现的方法,从而为接口的增强提供了空间:

public interface MyInterface {
  public void doSomething();

  public default void doTheDefaultThing() {
    System.out.println("Done in a default way!");
  }
}

Java 9中的接口

即使使用default方法,接口中也存在一个小的限制,即缺少在default方法之间共享代码的构造。
在Java 9中,他们引入了private方法,这些方法便于在接口中非抽象方法之间共享代码:

public interface MyInterface {
  public void doSomething();

  public default void doTheDefaultThing() {
    System.out.println("Done in a default way!");
    helper();
  }

  private void helper() {
    System.out.println("Calling the helper!!!");
  }
}

以上界面的增强作用:

public static void main(String[] args) {
  MyImplementation impl = new MyImplementation();
  impl.doSomething();
  impl.doTheDefaultThing();
}

结论

JDK团队显然已经使接口比Java8之前强大得多,并且还提供了一种在不破坏客户端代码的情况下增强库中接口的方法。

翻译自: https://www.javacodegeeks.com/2017/12/java-interface-journey-years-java-9-default-private-methods.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值