一文教你使用Java8中的静态接口方法

  介绍

一文教你使用Java8中的静态接口方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>默认方法

默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代码的兼容性。

下面通过一个简单的例子来深入理解下默认方法:

1。一天,下午说我们的产品需要获取时间和日期。于是我们就写了一个设置和获取日期时间的接口类TimeClient。

公共接口TimeClient {
  
  无效的凝固时间(int, int, int秒);
  
  空白设置当前日期(int, int, int);
  
  空白setDateAndTime (int, int, int,
  
  int, int, int第二);
  
  LocalDateTime getLocalDateTime ();
  
  }
  

以及这个接口的实现类<代码> SimpleTimeClient :

公共接口TimeClient {
  
  无效的凝固时间(int, int, int秒);
  
  空白设置当前日期(int, int, int);
  
  空白setDateAndTime (int, int, int, int, int, int第二);
  
  LocalDateTime getLocalDateTime ();//新增的方法
  
  ZonedDateTime getZonedDateTime (String zoneString);
  
  }

这样我们的实现类也要相应的进行重写。

公共接口TimeClient {
  
  无效的凝固时间(int, int, int秒);
  
  空白设置当前日期(int, int, int);
  
  空白setDateAndTime (int, int, int,
  
  int, int, int第二);
  
  LocalDateTime getLocalDateTime ();
  
  静态ZoneId getZoneId(字符串zoneString) {
  
  尝试{
  
  返回ZoneId.of (zoneString);
  
  }捕捉(DateTimeException e) {
  
  System.err。println(“无效的时区:“+ zoneString +
  
  “;使用默认时区相反!”);
  
  返回ZoneId.systemDefault ();
  
  }
  
  }//默认方法
  
  默认ZonedDateTime getZonedDateTime(字符串zoneString) {
  
  返回ZonedDateTime.of (getLocalDateTime (), getZoneId (zoneString));
  
  }
  
  }
  
  

一文教你使用Java8中的静态接口方法