日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java lambda使用_在Java 8 Lambda上使用Apache Commons Functor功能接口

發布時間:2023/12/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java lambda使用_在Java 8 Lambda上使用Apache Commons Functor功能接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java lambda使用

Apache Commons Functor (以下稱為[functor])是一個Apache Commons組件,它提供功能性的編程API和已實現的幾種模式(訪問者,生成器,聚合器等)。 Java 8具有幾個不錯的新功能,包括lambda表達式和函數接口 。
在Java 8中,lambdas或lambdas表達式是閉包 ,可以對其進行評估并表現為類似于匿名方法的行為。
功能接口是僅一種方法的接口。 這些接口可以在lambda中使用,并且可以節省編寫匿名類甚至實現接口的時間。 [functor]提供了幾個功能接口(感謝Matt Benson )。 它尚未發布,但是在項目站點中, SVN的主干中有一些新示例。 我將使用這些示例之一來說明如何將[functor]功能接口與Java 8 lambda結合使用。 在Java 8中帶有[functor]的示例之后,我將說明如何在Eclipse中運行Java 8(有點像gambiarra ,但效果很好)。

[functor]例子

這是一個帶有謂詞的簡單示例。

Listnumbers = Arrays.asList(1, 2, 3, 4);UnaryPredicateisEven = new UnaryPredicate() {public boolean test(Integer obj) {return obj % 2 == 0;} };for( Integer number : numbers ) {if (isEven.test(number)) {System.out.print(number + ' ');} }

它僅打印通過謂詞測試的那些偶數。

Lambdas的[functor]示例

此修改的版本正在使用Java 8 lambdas

List numbers = Arrays.asList(1, 2, 3, 4);UnaryPredicate isEven = (Integer obj) -> { return obj % 2 == 0; };for( Integer number : numbers ) {if (isEven.test(number)) {System.out.print(number + " ");} }

行為是相同的。 UnaryPredicate是一個功能接口。 它唯一的方法是boolean test(A obj); 。 當在lambda表達式中使用時,您只需要提供正確數量的參數并實現閉包代碼即可。

這兩個代碼段的區別在于創建偶數的UnaryPredicate的方式。 在下面,您可以看到使用和不使用Java 8 lambda的兩種創建謂詞的方法。

// pre-java-8 UnaryPredicate isEven = new UnaryPredicate() {public boolean test(Integer obj) {return obj % 2 == 0;} };// with lambda-8 UnaryPredicate isEven = (Integer obj) -> { return obj % 2 == 0; };

Eclipse中的Java 8

Eclipse 8不支持Java 8,因此您必須創建一個新的構建器才能使Eclipse編譯項目的源代碼。 有關如何設置Eclipse Juno和Java 8的完整分步指南,請參閱http://tuhrig.de/?p=921 。 我將在此處總結步驟,并說明如何將[functor] jar包含到項目類路徑中。

  • 從http://jdk8.java.net/lambda下載JDK并安裝(我安裝在/opt/java/jdk1.8.0中 )
  • 在Eclipse中創建一個新的Java項目(在我的情況下為try-lambdas )
  • 從Eclipse項目中禁用默認的Java Builder ,因為它不適用于Java 8
  • 創建一個新的生成器。 當出現允許您瀏覽程序的屏幕提示時,選擇Java 8 javac(對我來說是/opt/java/jdk1.8.0/bin/javac )
  • 將以下參數添加到您的構建器中: -classpath %CLASSPATH%;commons-functor-1.0-SNAPSHOT-jar-with-dependencies.jar;. -source 8 -d ${workspace_loc:/lambdas}/bin ${workspace_loc:/Java8}/src/lambdas/*.java

您必須包括[functor]的jar及其依賴項。 為了方便起見,我使用maven-assembly-plugin生成了一個帶有[functor]依賴項的jar。 可從此GitHub存儲庫中獲取代碼和jar。 或者,如果您希望生成具有依賴性的自己的[functor] jar,請從存儲庫中簽出代碼,如下所示。

svn checkout https://svn.apache.org/repos/asf/commons/sandbox/functor/trunk/ commons-functor

最后,在運行mvn clean assembly:assembly之前,將以下內容包含到[functor] pom.xml中 。

<plugin><artifactId>maven-assembly-plugin</artifactId><version>2.3</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration> </plugin>

參考:來自Kinoshita博客博客的JCG合作伙伴 Bruno Kinoshita 將Apache Commons Functor功能接口與Java 8 lambda結合使用 。

翻譯自: https://www.javacodegeeks.com/2012/12/using-apache-commons-functor-functional-interfaces-with-java-8-lambdas.html

java lambda使用

總結

以上是生活随笔為你收集整理的java lambda使用_在Java 8 Lambda上使用Apache Commons Functor功能接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。