1、說明
方法引用可以看成是Lambda表達式的深層表達。換句話說,方法引用是Lambda表達式,也就是函數介面的例子,透過方法名稱指向方法。
2、使用場景
當要傳遞給Lambda 體的操作,已經實現的方法了,可以使用方法來引用
3、格式
类(或对象) :: 方法名
4、實例
public class MethodRefTest { // 情况一:对象 :: 实例方法 //Consumer中的void accept(T t) //PrintStream中的void println(T t) @Test public void test1() { //使用Lambda表达 Consumer<String> con1 = str -> System.out.println(str); con1.accept("中国"); System.out.println("===================="); //使用方法引用 PrintStream ps = System.out; Consumer con2 = ps::println; con2.accept("China"); } //Supplier中的T get() //Employee中的String getName() @Test public void test2() { //使用Lambda表达 Employee emp = new Employee(1001, "Bruce", 34, 600); Supplier<String> sup1 = () -> emp.getName(); System.out.println(sup1.get()); System.out.println("===================="); //使用方法引用 Supplier sup2 = emp::getName; System.out.println(sup2.get()); } // 情况二:类 :: 静态方法 //Comparator中的int compare(T t1,T t2) //Integer中的int compare(T t1,T t2) @Test public void test3() { //使用Lambda表达 Comparator<Integer> com1 = (t1, t2) -> Integer.compare(t1, t2); System.out.println(com1.compare(32, 45)); System.out.println("===================="); //使用方法引用 Comparator<Integer> com2 = Integer::compareTo; System.out.println(com2.compare(43, 34)); } //Function中的R apply(T t) //Math中的Long round(Double d) @Test public void test4() { //使用匿名内部类 Function<Double, Long> func = new Function<Double, Long>() { @Override public Long apply(Double aDouble) { return Math.round(aDouble); } }; System.out.println(func.apply(10.5)); System.out.println("===================="); //使用Lambda表达式 Function<Double, Long> func1 = d -> Math.round(d); System.out.println(func1.apply(12.3)); System.out.println("===================="); //使用方法引用 Function<Double, Long> func2 = Math::round; System.out.println(func2.apply(12.6)); } // 情况三:类 :: 实例方法 // Comparator中的int comapre(T t1,T t2) // String中的int t1.compareTo(t2) @Test public void test5() { //使用Lambda表达式 Comparator<String> com1 = (s1, s2) -> s1.compareTo(s2); System.out.println(com1.compare("abd", "aba")); System.out.println("===================="); //使用方法引用 Comparator<String> com2 = String::compareTo; System.out.println(com2.compare("abd", "abc")); } //BiPredicate中的boolean test(T t1, T t2); //String中的boolean t1.equals(t2) @Test public void test6() { //使用Lambda表达式 BiPredicate<String, String> pre1 = (s1, s2) -> s1.equals(s2); System.out.println(pre1.test("abc", "abc")); System.out.println("===================="); //使用方法引用 BiPredicate<String, String> pre2 = String::equals; System.out.println(pre2.test("abc", "abd")); } // Function中的R apply(T t) // Employee中的String getName(); @Test public void test7() { //使用Lambda表达式 Employee employee = new Employee(1001, "Tom", 45, 10000); Function<Employee, String> func1 =e->e.getName(); System.out.println(func1.apply(employee)); System.out.println("===================="); //使用方法引用 Function<Employee,String>func2 = Employee::getName; System.out.println(func2.apply(employee)); } }
以上是java方法引用怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JVM通過JavaNativeInterface(JNI)和Java標準庫處理操作系統API差異:1.JNI允許Java代碼調用本地代碼,直接與操作系統API交互。 2.Java標準庫提供統一API,內部映射到不同操作系統API,確保代碼跨平台運行。

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

javaachievesplatformIndependencEthroughThoJavavIrtualMachine(JVM),wodecutesbytecodeonyanydenanydevicewithajvm.1)javacodeiscompiledintobytecode.2)

JavaGUI開發中的平台獨立性面臨挑戰,但可以通過使用Swing、JavaFX,統一外觀,性能優化,第三方庫和跨平台測試來應對。 JavaGUI開發依賴於AWT和Swing,Swing旨在提供跨平台一致性,但實際效果因操作系統不同而異。解決方案包括:1)使用Swing和JavaFX作為GUI工具包;2)通過UIManager.setLookAndFeel()統一外觀;3)優化性能以適應不同平台;4)使用如ApachePivot或SWT的第三方庫;5)進行跨平台測試以確保一致性。

JavadevelovermentIrelyPlatForm-DeTueTososeVeralFactors.1)JVMVariationsAffectPerformanceNandBehaviorAcroSsdifferentos.2)Nativelibrariesviajnijniiniininiinniinindrododerplatefform.3)

Java代碼在不同平台上運行時會有性能差異。 1)JVM的實現和優化策略不同,如OracleJDK和OpenJDK。 2)操作系統的特性,如內存管理和線程調度,也會影響性能。 3)可以通過選擇合適的JVM、調整JVM參數和代碼優化來提升性能。

Java'splatFormentenceHaslimitations不包括PerformanceOverhead,versionCompatibilityIsissues,挑戰WithnativelibraryIntegration,Platform-SpecificFeatures,andjvminstallation/jvminstallation/jvmintenance/jeartenance.therefactorscomplicatorscomplicatethe“ writeOnce”


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),