最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java9在interface中定義私有方法詳解

 更新時間:2020年10月15日 08:37:03   作者:字母哥  
在本篇內容里小編給大家整理的是一篇關于java9在interface中定義私有方法,有興趣的朋友們可以學習下。

一、Java 9接口定義私有方法

從Java 9開始,我們可以在Interface接口中添加private的私有方法和私有靜態(tài)方法。這些私有方法將改善接口內部的代碼可重用性。例如,如果需要兩個默認方法來共享代碼,則私有接口方法將允許它們共享代碼,但不將該私有方法暴露給它的實現(xiàn)類調用(后文中會給大家舉一個例子)。

在接口中使用私有方法有四個規(guī)則:

  • 接口中private方法不能是abstract抽象方法。因為abstract抽象方法是公開的用于給接口實現(xiàn)類實現(xiàn)的方法,所以不能是private。
  • 接口中私有方法只能在接口內部的方法里面被調用。
  • 接口中私有靜態(tài)方法可以在其他靜態(tài)和非靜態(tài)接口方法中使用。
  • 接口中私有非靜態(tài)方法不能在私有靜態(tài)方法內部使用。
interface CustomInterface {

  public abstract void abstractMethod(); //抽象方法不能是私有的

  public default void defaultMethod() {
    privateMethod(); //可以調用接口中的私有方法
    privateStaticMethod(); //可以調用接口中的私有靜態(tài)方法
    System.out.println("普通方法被調用");
  }

  public static void staticMethod() {
    privateStaticMethod(); //public靜態(tài)方法可以調用private靜態(tài)方法
    System.out.println("靜態(tài)方法被調用");
  }

  private void privateMethod() {
    System.out.println("private私有方法被調用");
  }

  private static void privateStaticMethod() {
    System.out.println("private私有靜態(tài)方法被調用");
  }
}

按照上面四個規(guī)則,上面的代碼定義都是正確的

二、一個例子:分別計算奇數與偶數的和

接口定義如下,下文中add方法采用了java8 的Stream流操作,分別使用lambda表達式作為過濾條件,并求和。核心是:addEvenNumbers偶數求和函數和addOddNumbers奇數求和函數,都調用了add接口私有方法。

public interface CustomCalculator 
{
  default int addEvenNumbers(int... nums) { //非抽象,java8 開始可以定義default方法
    return add(n -> n % 2 == 0, nums);  //過濾偶數并求和,調用private私有方法
  }

  default int addOddNumbers(int... nums) { //非抽象,java8 開始可以定義default方法
    return add(n -> n % 2 != 0, nums); //過濾奇數并求和,調用private私有方法
  }

  //按照過濾條件過濾奇數或偶數并sum求和:java9開始可以定義private私有方法
  private int add(IntPredicate predicate, int... nums) { 
    return IntStream.of(nums)  //java8 Stream流
        .filter(predicate)  //java8 predicate及過濾器
        .sum(); //sum求和
  }
}

接口實現(xiàn)類MainCalculator 實現(xiàn)CustomCalculator接口

public class MainCalculator implements CustomCalculator {

  public static void main(String[] args) {
    CustomCalculator demo = new MainCalculator ();

    int sumOfEvens = demo.addEvenNumbers(1,2,3,4,5,6,7,8,9);
    System.out.println(sumOfEvens);  //過濾所有偶數并求和,結果是20

    int sumOfOdds = demo.addOddNumbers(1,2,3,4,5,6,7,8,9);
    System.out.println(sumOfOdds);  //過濾所有奇數并求和,結果是25
  }
}

到此這篇關于java9在interface中定義私有方法詳解的文章就介紹到這了,更多相關java9可以在interface中定義私有方法了內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 舉例講解Java的內部類與類的加載器

    舉例講解Java的內部類與類的加載器

    這篇文章主要介紹了Java的內部類與類的加載器,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2016-03-03
  • Java ArrayList擴容機制原理深入分析

    Java ArrayList擴容機制原理深入分析

    在Java中,ArrayList是最常用的集合之一。它是一種容器,它的內部定義了一個Object類型的數組elementData,因此可用于存儲任意類型的數據。我們知道,數組是長度恒定的。而ArrayList相當于是一個長度可變的動態(tài)數組,一起來看看的它的擴容機制
    2023-02-02
  • 使用Spring多數據源配置

    使用Spring多數據源配置

    這篇文章主要介紹了使用Spring多數據源配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java虛擬機堆內存溢出的原因和解決方法

    Java虛擬機堆內存溢出的原因和解決方法

    在Java開發(fā)中,內存溢出(OutOfMemoryError)是一個常見的問題,尤其是在處理大量數據或長時間運行的應用時,本文將通過一個簡單的示例,展示如何通過JVM參數和代碼分析來理解和解決內存溢出問題,需要的朋友可以參考下
    2024-10-10
  • 使用Spring boot標記一個方法過時

    使用Spring boot標記一個方法過時

    這篇文章主要介紹了使用Spring boot標記一個方法過時,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解

    Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解

    這篇文章主要介紹了Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot3使用Jasypt加密數據庫用戶名、密碼等敏感信息

    SpringBoot3使用Jasypt加密數據庫用戶名、密碼等敏感信息

    使用Jasypt(Java Simplified Encryption)進行數據加密和解密主要涉及幾個步驟,包括引入依賴、配置加密密碼、加密敏感信息、將加密信息存儲到配置文件中,以下是詳細的使用說明,需要的朋友可以參考下
    2024-07-07
  • 基于Java swing組件實現(xiàn)簡易計算器

    基于Java swing組件實現(xiàn)簡易計算器

    這篇文章主要介紹了基于Java swing組件實現(xiàn)簡易計算器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 使用CI/CD工具Github Action發(fā)布jar到Maven中央倉庫的詳細介紹

    使用CI/CD工具Github Action發(fā)布jar到Maven中央倉庫的詳細介紹

    今天通過對Github Action的簡單使用來介紹了CI/CD的作用,這個技術體系是項目集成交付的趨勢,也是面試中的一個亮點技能。 而且這種方式可以實現(xiàn)“一次配置,隨時隨地集成部署”,感興趣的朋友一起看看吧
    2021-07-07
  • JPA使用樂觀鎖應對高并發(fā)方式

    JPA使用樂觀鎖應對高并發(fā)方式

    這篇文章主要介紹了JPA使用樂觀鎖應對高并發(fā)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

邯郸市| 衡南县| 中方县| 荥经县| 耿马| 岑溪市| 扎囊县| 黑水县| 叙永县| 宁城县| 竹溪县| 长岭县| 禄劝| 花垣县| 襄城县| 南宫市| 黎平县| 商洛市| 淮南市| 滦南县| 长白| 凤山市| 息烽县| 龙井市| 湛江市| 兴城市| 辰溪县| 西藏| 息烽县| 策勒县| 英山县| 海口市| 会宁县| 辽阳市| 集安市| 高青县| 麻栗坡县| 凌海市| 朝阳县| 东宁县| 虎林市|