詳細分析@FunctionalInterface的基本知識(附Demo)

目錄

  • 前言
  • 1. 基本知識
  • 2. Demo

前言

Java的基本知識推薦閱讀:

  1. java框架 零基礎從入門到精通的學習路線 附開源項目面經等(超全)
  2. Spring框架從入門到學精(全)

1. 基本知識

@FunctionalInterface 是 Java 8 引入的一個注解,用于標記一個接口為函數式接口

函數式接口是只包含一個抽象方法的接口,可以有多個默認方法或靜態方法,通常用于 lambda 表達式和方法引用

  • 標記接口為函數式接口,明確接口的設計意圖,使代碼更易讀,便于他人理解接口的用途
  • 編譯器會確保被標記的接口只有一個抽象方法。如果接口有多于一個抽象方法,編譯器會報錯,從而避免接口被錯誤地使用

2. Demo

基本的使用法則如下:

定義函數式接口以及使用lambda

@FunctionalInterface
interface MyFunctionalInterface {void myMethod();
}public class FunctionalInterfaceDemo {public static void main(String[] args) {MyFunctionalInterface func = () -> System.out.println("Hello, Functional Interface!");func.myMethod();}
}

多個默認方法和靜態方法

@FunctionalInterface
interface MyFunctionalInterface {void myMethod();// 默認方法default void defaultMethod() {System.out.println("This is a default method.");}// 靜態方法static void staticMethod() {System.out.println("This is a static method.");}
}public class FunctionalInterfaceDemo {public static void main(String[] args) {MyFunctionalInterface func = () -> System.out.println("Hello, Functional Interface!");func.myMethod();func.defaultMethod();MyFunctionalInterface.staticMethod();}
}

為了進一步說明此注解的主要性:(編譯檢查)

加上注解:

在這里插入圖片描述

給一個實際的Demo例子如下:

// 定義函數式接口
@FunctionalInterface
interface CorrectFunctionalInterface {void singleMethod();// 可以有默認方法default void defaultMethod() {System.out.println("This is a default method.");}// 可以有靜態方法static void staticMethod() {System.out.println("This is a static method.");}
}// 具體使用
public class FunctionalInterfaceDemo {public static void main(String[] args) {// 使用 lambda 表達式實現 singleMethodCorrectFunctionalInterface func = () -> System.out.println("Hello from singleMethod!");// 調用 singleMethodfunc.singleMethod();// 調用默認方法func.defaultMethod();// 調用靜態方法CorrectFunctionalInterface.staticMethod();}
}

截圖如下:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44090.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

外賣商城平臺小程序的設計

管理員賬戶功能包括:系統首頁,個人中心,用戶管理,商家管理,騎手管理,商品類型管理,商品信息管理,訂單信息管理 微信端賬號功能包括:系統首頁,商品信息&#…

【AI資訊早報】AI科技前沿資訊概覽:2024年7月10日早報

AI科技前沿資訊概覽,涵蓋了行業大會、技術創新、應用場景、行業動態等多個方面,全面展現了AI領域的最新發展動態和未來趨勢。 一、人工智能大模型引領新業態 在2024年(第二十三屆)中國互聯網大會上,中國工程院院士鄔賀…

模板初階詳解

目錄 泛型編程函數模板函數模板概念函數模板格式函數模板的原理函數模板的實例化隱式實例化強制類型轉換的疑惑 顯式實例化 模板參數的匹配原則 類模板類模板的定義格式類模板的實例化 感謝各位大佬對我的支持,如果我的文章對你有用,歡迎點擊以下鏈接 🐒&#x1f41…

微信小程序接口wx.getLocation違規導致封禁解決辦法

1、找到站內信的這個封禁的通知(功能封禁的通知,而不是處理警告的通知) 2、點擊通知會有申訴鏈接,點開申訴鏈接 申訴原因可參考下面的內容: 1.小程序哪些板塊已除去收集地理位置、2.哪些板塊需要收集地理位置、3.詳細…

寶塔內 計劃任務更新遠程主機的時間

很多情況下一些主機無法上網,長此以往有可能讓系統內的時間混亂 ,這是一個很愁人的事情 這里我們找了一個可以通過寶塔的計劃任務或 cron 不斷將本地時間通過ssh登錄,并在登錄狀態下設置時間的方法.找了很多方案都不行 .最終采用了私鑰登錄的方案 1 使用寶塔的計劃任務(可選): …

WindowsMac共享文件夾設置

共享文件夾設置 共享文件夾設置Windows系統設置步驟一:設置共享文件夾步驟二: 訪問共享文件夾 Mac系統中設置共享文件夾步驟一:設置共享文件夾步驟二:訪問共享文件夾 小貼士結論 共享文件夾設置 有時需要在多臺電腦之間共享文件夾&#xff0…

4.MkDocs樣式

學習 Admonitions(警告) - Material for MkDocs (wdk-docs.github.io) 提示 - Material for MkDocs 中文文檔 (llango.com) Buttons(按鈕) - Material for MkDocs (wdk-docs.github.io) 建議去看這些網站,更為詳細。 常用功能 便利貼 ?? 開啟 markdown_ex…

Linux筆記之iftop查看特定IP地址吞吐量

Linux筆記之iftop查看特定IP地址吞吐量 code review! 文章目錄 Linux筆記之iftop查看特定IP地址吞吐量一.iftop安裝與監控二.iftop 界面簡單介紹如何查看單位實時流量的顯示形式控制單位顯示示例 三.數據存儲和傳輸的單位:比特(bit)和字節&…

Gemma2——Google 新開源大型語言模型完整應用指南

0.引言 Gemma 2以前代產品為基礎,提供增強的性能和效率,以及一系列創新功能,使其在研究和實際應用中都具有特別的吸引力。Gemma 2 的與眾不同之處在于,它能夠提供與更大的專有模型相當的性能,但其軟件包專為更廣泛的可…

hdfs大規模數據存儲底層原理詳解(第31天)

系列文章目錄 一、HDFS設計原理 二、HDFS系統架構 三、HDFS關鍵技術 四、HDFS應用實例 五、解決HDFS不能處理小文件詳解問題 文章目錄 系列文章目錄前言一、設計原理二、系統架構三、關鍵技術四、應用實例五、解決HDFS不能處理小文件詳解問題1. 合并小文件2. 優化Hive配置3. 使…

DDR3 SO-DIMM 內存條硬件總結(一)

最近在使用fpga讀寫DDR3,板子上的DDR3有兩種形式與fpga相連,一種是直接用ddr3內存顆粒,另一種是通過內存條的形式與fpga相連。這里我們正好記錄下和ddr3相關的知識,先從DDR3 SO-DIMM 內存條開始。 1.先看內存條的版本 從JEDEC下載…

Mysql練習題目【7月10日更新】

七、Mysql練習題目 https://zhuanlan.zhihu.com/p/38354000 1. 創建表 創建學生表 mysql> create table if not exists student(-> student_id varchar(255) not null,-> student_name varchar(255) not null,-> birthday date not null,-> gender varchar(…

前端面試題33(實時消息傳輸)

前端實時傳輸協議主要用于實現實時數據交換,特別是在Web應用中,它們讓開發者能夠構建具有實時功能的應用,如聊天、在線協作、游戲等。以下是幾種常見的前端實時傳輸協議的講解: 1. Short Polling (短輪詢) 原理:客戶…

【1】A-Frame整體介紹

1.A-Frame是什么? A-Frame 是一個用于構建虛擬現實 (VR) 體驗的 Web 框架。 A-Frame 基于 HTML 之上,因此上手簡單。但 A-Frame 不僅僅是 3D 場景圖或標記語言;它還是一種標記語言。其核心是一個強大的實體組件框架,為 Three.js …

Golang | Leetcode Golang題解之第226題翻轉二叉樹

題目: 題解: func invertTree(root *TreeNode) *TreeNode {if root nil {return nil}left : invertTree(root.Left)right : invertTree(root.Right)root.Left rightroot.Right leftreturn root }

AI機器人在未來的應用場景預測:是否會取代人類?華為、百度、特斯拉他們在AI領域都在做什么?

引言 隨著人工智能(AI)技術的飛速發展,AI機器人在各個領域的應用變得越來越普遍。從工業自動化到日常生活,AI機器人已經開始展現出強大的潛力和實際應用價值。本文將深入探討AI機器人在未來的應用場景,并分析它們是否…

uniapp+vue3嵌入Markdown格式

使用的庫是towxml 第一步:下載源文件,那么可以git clone,也可以直接下載壓縮包 git clone https://github.com/sbfkcel/towxml.git 第二步:設置文件夾內的config.js,可以選擇自己需要的格式 第三步:安裝…

大模型/NLP/算法面試題總結3——BERT和T5的區別?

1、BERT和T5的區別? BERT和T5是兩種著名的自然語言處理(NLP)模型,它們在架構、訓練方法和應用場景上有一些顯著的區別。以下是對這兩種模型的詳細比較: 架構 BERT(Bidirectional Encoder Representation…

【Web前端】JWT(JSON Web Tokens)概述

1、簡介 JWT(JSON Web Tokens)是一種用于雙方之間安全傳輸信息的簡潔的、URL安全的令牌標準。 它基于JSON對象,并通過數字簽名確保其完整性和真實性。 JWT因其小巧、自包含以及易于在客戶端和服務器之間傳輸的特性而被廣泛使用于身份驗證和…

python字符串驗證從基礎到進階的總結

引言 在數據處理和文本挖掘中,對字符串的驗證是確保數據符合特定要求的關鍵步驟之一。其中一個常見的驗證需求是確認字符串是否只包含字母。Python為此提供了多種實現的方法,我們將逐一討論它們。 方法1:使用 isalpha() 方法 def is_all_l…