开发手册 欢迎您!
软件开发者资料库

Java 9 - 专用接口方法

Java 9专用接口方法 - 从简单和简单的步骤学习Java 9,从基本概念到高级概念,包括概述,环境设置,模块系统,REPL(JShell),改进的JavaDocs,Multirelease JAR,Collection Factory Methods,Private Interface Methods, Process API,Stream API,Try with Resources,Optional Class,CompletableFuture API改进,Enhanced @Deprecated Annotation,Inner Class Diamond Operator,Multiresolution Image API,Miscellaneous Features。

在java 8之前,接口可以有以下类型的变量/方法.

  • 常量变量

  • 抽象方法

因此我们不能在接口中使用方法实现,更确切地说是Java 8之前的默认实现.请参阅示例.

public class Tester {   public static void main(String []args) {      LogOracle log = new LogOracle();      log.logInfo("");      log.logWarn("");      log.logError("");      log.logFatal("");      LogMySql log1 = new LogMySql();      log1.logInfo("");      log1.logWarn("");      log1.logError("");      log1.logFatal("");   }}final class LogOracle implements Logging {   @Override   public void logInfo(String message) {      getConnection();      System.out.println("Log Message : " + "INFO");      closeConnection();   }   @Override   public void logWarn(String message) {      getConnection();      System.out.println("Log Message : " + "WARN");      closeConnection();   }   @Override   public void logError(String message) {      getConnection();      System.out.println("Log Message : " + "ERROR");      closeConnection();   }   @Override   public void logFatal(String message) {      getConnection();      System.out.println("Log Message : " + "FATAL");      closeConnection();   }   @Override   public void getConnection() {      System.out.println("Open Database connection");   }   @Override   public void closeConnection() {      System.out.println("Close Database connection");   }}final class LogMySql implements Logging {   @Override   public void logInfo(String message) {      getConnection();      System.out.println("Log Message : " + "INFO");      closeConnection();   }   @Override   public void logWarn(String message) {      getConnection();      System.out.println("Log Message : " + "WARN");      closeConnection();   }   @Override   public void logError(String message) {      getConnection();      System.out.println("Log Message : " + "ERROR");      closeConnection();   }   @Override   public void logFatal(String message) {      getConnection();      System.out.println("Log Message : " + "FATAL");      closeConnection();   }   @Override   public void getConnection() {      System.out.println("Open Database connection");   }   @Override   public void closeConnection() {      System.out.println("Close Database connection");   }}interface Logging {   String ORACLE = "Oracle_Database";   String MYSQL = "MySql_Database";   void logInfo(String message);   void logWarn(String message);   void logError(String message);   void logFatal(String message);   void getConnection();   void closeConnection();}

输出

您将看到以下输出.

Open Database connectionLog Message : INFOClose Database connectionOpen Database connectionLog Message : WARNClose Database connectionOpen Database connectionLog Message : ERRORClose Database connectionOpen Database connectionLog Message : FATALClose Database connection

在上面的示例中,每个日志方法都有自己的实现.使用Java 8接口可以有以下类型的变量/方法.

  • 常量变量

  • 摘要方法

  • 默认方法

  • 静态方法

让我们有默认实现接口本身使用Java 8进行静态方法.

public class Tester {   public static void main(String []args) {      LogOracle log = new LogOracle();      log.logInfo("");      log.logWarn("");      log.logError("");      log.logFatal("");            LogMySql log1 = new LogMySql();      log1.logInfo("");      log1.logWarn("");      log1.logError("");      log1.logFatal("");   }}final class LogOracle implements Logging { }final class LogMySql implements Logging { }interface Logging {   String ORACLE = "Oracle_Database";   String MYSQL = "MySql_Database";   default void logInfo(String message) {      getConnection();      System.out.println("Log Message : " + "INFO");      closeConnection();   }   default void logWarn(String message) {      getConnection();      System.out.println("Log Message : " + "WARN");      closeConnection();   }   default void logError(String message) {      getConnection();      System.out.println("Log Message : " + "ERROR");      closeConnection();   }   default void logFatal(String message) {      getConnection();      System.out.println("Log Message : " + "FATAL");      closeConnection();   }   static void getConnection() {      System.out.println("Open Database connection");   }   static void closeConnection() {      System.out.println("Close Database connection");   }}

输出

您将看到以下输出.

Open Database connectionLog Message : INFOClose Database connectionOpen Database connectionLog Message : WARNClose Database connectionOpen Database connectionLog Message : ERRORClose Database connectionOpen Database connectionLog Message : FATALClose Database connection

在上面的例子中,我们再次重复.使用Java 9接口可以有以下类型的变量/方法.

  • 常量变量

  • 摘要方法

  • 默认方法

  • 静态方法

  • 私有方法

  • 私有静态方法

让我们使用私有方法并在Java 9中使用它们.

public class Tester {   public static void main(String []args) {      LogOracle log = new LogOracle();      log.logInfo("");      log.logWarn("");      log.logError("");      log.logFatal("");            LogMySql log1 = new LogMySql();      log1.logInfo("");      log1.logWarn("");      log1.logError("");      log1.logFatal("");   }}final class LogOracle implements Logging { }final class LogMySql implements Logging { }interface Logging {   String ORACLE = "Oracle_Database";   String MYSQL = "MySql_Database";   private void log(String message, String prefix) {      getConnection();      System.out.println("Log Message : " + prefix);      closeConnection();   }   default void logInfo(String message) {      log(message, "INFO");   }   default void logWarn(String message) {      log(message, "WARN");   }   default void logError(String message) {      log(message, "ERROR");   }   default void logFatal(String message) {      log(message, "FATAL");   }   private static void getConnection() {      System.out.println("Open Database connection");   }   private static void closeConnection() {      System.out.println("Close Database connection");   }}

输出

您将看到以下输出.

Open Database connectionLog Message : INFOClose Database connectionOpen Database connectionLog Message : WARNClose Database connectionOpen Database connectionLog Message : ERRORClose Database connectionOpen Database connectionLog Message : FATALClose Database connection