返回顶部
首页 > 资讯 > 精选 >Java9中接口的私有方法如何使用
  • 251
分享到

Java9中接口的私有方法如何使用

2023-07-06 03:07:09 251人浏览 独家记忆
摘要

本文小编为大家详细介绍“Java9中接口的私有方法如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java9中接口的私有方法如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Java 8 之前版本Ja

本文小编为大家详细介绍“Java9中接口的私有方法如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java9中接口的私有方法如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Java 8 之前版本

Java 8 之前 ,接口好像就只允许两种类型的数据,一个是常量、另一个就是公开 ( public ) 的虚方法 ( abstract ),而且是虚方法哦,就是没有任何实现的方法,因为这些方法要被类来实现。也就是说,Java 8 之前的版本不存在有着默认实现的方法。

我们来看看一个示例,

public class InterfacePrivateMethodTester {   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();}

运行结果如下

$ javac InterfacePrivateMethodTester.java && java InterfacePrivateMethodTester
Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection
Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection

在这个实例中,每种类型的日志都有自己的实现

最坑的是什么,每个方法都要实现一遍。是的,每个方法都要实现

jdk 8版本

而 Java 8 也终于作出了一些改变,Java 8 中的接口,可以具有以下类型的变量和方法

常量

虚方法

默认方法

静态方法

我们将上面的范例改改,使用 Java 8 的特性

public class InterfacePrivateMethodTester {   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");   }}

运行结果如下

$ javac InterfacePrivateMethodTester.java && java InterfacePrivateMethodTester
Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection
Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection

因为 Java 8 的接口中的方法可以有默认实现,也就是使用 default 关键字修饰的方法

所以,类实现某个接口就比较简单了,可以有选择性的实现部分方法。

但是,仍然很坑,就是每个默认方法中的代码,都必须完整的,而且不能调用其它的默认实现方法

Java 9版本

终于忍无可忍了,Java 9 中可以为接口提供私有的方法,包括私有成员方法和私有静态方法

所以 Java 9 中的接口,可以具有以下类型的变量和方法

常量

虚方法

默认方法

静态方法

私有静态方法

私有方法

于是,我们可以继续修改刚刚的实例,改的更简单明白些

InterfacePrivateMethodTester.java

public class InterfacePrivateMethodTester {   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");   }}

运行结果如下

$ javac InterfacePrivateMethodTester.java && java InterfacePrivateMethodTester
Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection
Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection

读到这里,这篇“Java9中接口的私有方法如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Java9中接口的私有方法如何使用

本文链接: https://lsjlt.com/news/357566.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java9中接口的私有方法如何使用
    本文小编为大家详细介绍“Java9中接口的私有方法如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java9中接口的私有方法如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Java 8 之前版本Ja...
    99+
    2023-07-06
  • Java9中接口的私有方法怎么使用
    本篇内容介绍了“Java9中接口的私有方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java 8 之前版本Java 8 之前 ,...
    99+
    2023-07-06
  • Java9中接口的私有方法详解
    目录Java 8 之前版本JDK 8版本Java 9版本Java 8 之前版本 Java 8 之前 ,接口好像就只允许两种类型的数据,一个是常量、另一个就是公开 ( public )...
    99+
    2023-05-15
    Java9接口私有方法 Java接口私有方法 Java9接口
  • 如何在python中使用私有属性和私有方法
    本篇文章给大家分享的是有关如何在python中使用私有属性和私有方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、...
    99+
    2023-06-14
  • 如何正确使用PHP中的私有静态方法
    使用PHP中的私有静态方法是一种保护类内部逻辑的有效方式。私有静态方法只能在同一个类内部进行调用,外部无法访问,从而保证了程序的安全性和封装性。在编写PHP代码时,正确使用私有静态方法...
    99+
    2024-04-02
  • 在Java中如何使用接口调用Groovy方法
    小编给大家分享一下在Java中如何使用接口调用Groovy方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!定义Java接口包含在Java中需要调用的Groovy...
    99+
    2023-06-03
  • jshell如何在java9项目中使用
    jshell如何在java9项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下载袭来是个pkg文件,双击安装,默认装到了/Library/Java这里,java9的...
    99+
    2023-05-31
    java9 ava jshell
  • PowerMock使用-Mock私有方法
    前言 本篇文章将说明如何使用PowerMock对私有方法进行Mock。关于使用PowerMock需要引入哪些依赖,请参考PowerMock使用-依赖准备。 正文 被测试类如下所示。 public cl...
    99+
    2023-09-16
    java 单元测试 PowerMock Mock私有方法
  • uplink接口的使用方法
    这篇文章主要介绍uplink接口的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!uplink接口的使用方法:级联的时候,可使用一般的网线将一个交换机的普通端口和另一个交换机的Uplink口连起来。如果两个设备...
    99+
    2023-06-14
  • PHP中私有静态方法的使用详解
    PHP是一种广泛应用的编程语言,其面向对象特性使得代码的结构更加清晰和可维护。在PHP中,除了常见的公有方法和属性外,还存在私有方法和私有属性,它们只能在类的内部访问,而无法在外部直接...
    99+
    2024-04-02
  • default如何修饰接口中的方法
    小编给大家分享一下default如何修饰接口中的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、default修饰接口中的方法在实现HandlerInterceptor接口时,我发现不实现HandlerInterce...
    99+
    2023-06-15
  • Docker中如何使用私有仓库
    在Docker中使用私有仓库,可以通过以下步骤实现: 部署私有仓库:首先需要在服务器上部署私有仓库,可以使用Docker官方提供...
    99+
    2024-04-02
  • 浅析Java中Future接口的使用方法
    目录引言一、Future接口简介二、Future接口的原理三、Future接口的核心方法解析四、Future接口的实现类五、Future接口的源码解读六、Future接口的使用示例结...
    99+
    2023-05-19
    Java Future接口使用方法 Java Future接口使用 Java Future接口
  • 关于接口ApplicationContext中的getBean()方法使用
    目录getBean一共有以下四种方法原型第一种:l getBean(String name)第二种:l getBean(Class<T> type)第三种:l getBe...
    99+
    2024-04-02
  • 如何mock当前类的私有方法
    背景 基础知识 mockito单元测试:它的做法是mock掉当前类的所有外部依赖,保障自己的代码没有问题。举个例子,如果数据库查询的语句出了问题,单元测试不会测试出来。因为它直接mock掉了,不会去真...
    99+
    2023-09-01
    单元测试 junit java
  • golang 如何使用反射访问私有字段和方法
    go语言中可以使用反射来访问私有字段和方法:访问私有字段:通过 reflect.valueof() 获取值的反射值,再使用 fieldbyname() 获取字段的反射值,并调用 stri...
    99+
    2024-05-03
    反射 私有访问 golang go语言
  • javascript中公有方法和私有方法怎么用
    这篇文章主要介绍“javascript中公有方法和私有方法怎么用”,在日常操作中,相信很多人在javascript中公有方法和私有方法怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • Spring中如何使用Comparator接口
    我们先来回顾下Comparator接口在我们日常开发中的作用,Comparator比较器接口可以将自身传递给排序方法(比如Collections.sort或Arrays.sort),...
    99+
    2024-04-02
  • VB.NET中如何使用IDisplayer接口
    本篇文章为大家展示了VB.NET中如何使用IDisplayer接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET还是比较常用的,于是我研究了一下VB.NET IDisplayer接口,在...
    99+
    2023-06-17
  • Python中如何使用UNIX接口?
    Python作为一种高级编程语言,具有广泛的应用场景。它不仅可以完成各种编程任务,还可以与底层系统进行交互。本文将详细介绍Python中如何使用UNIX接口。 一、UNIX接口简介 UNIX接口是一种底层接口,它提供了与操作系统进行交互的方...
    99+
    2023-09-03
    load unix 接口
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作