介绍
一文教你使用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中的静态接口方法