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

歡迎訪問 生活随笔!

生活随笔

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

java

java ab工具_(ab)使用Java 8 FunctionalInterfaces作为本地方法

發布時間:2023/12/3 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java ab工具_(ab)使用Java 8 FunctionalInterfaces作为本地方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java ab工具

如果您正在使用更高級的語言(例如Scala或Ceylon,甚至JavaScript)進行編程,則“嵌套函數”或“本地函數”是您非常常見的習慣用法。 例如,您將編寫諸如fibonacci函數之類的東西:

def f() = {def g() = "a string!"g() + "– says g" }
  • ( 來自Aaron Yodaiken的堆棧溢出問題 )

f()函數包含一個嵌套的g()函數,該函數在外部f()函數的作用域內是局部的。

在Java中,無法創建這樣的局部函數,但是您可以將lambda表達式分配給局部變量,然后使用它。

上面的示例可以轉換為以下Java代碼:

String f() {Supplier<String> g = () -> "a string!";return g.get() + "- says g"; }

盡管這個例子很簡單,但測試用例卻更為有用。 例如,請考慮以下jOOλ單元測試 ,它檢查是否Stream.close()的語義正確跨越各種jOOλ實施Seq方法,即兩股合并為一個:

@Test public void testCloseCombineTwoSeqs() {Consumer<BiFunction<Stream<Integer>, Stream<Integer>, Seq<?>>> test = f -> {AtomicBoolean closed1 = new AtomicBoolean();AtomicBoolean closed2 = new AtomicBoolean();Stream s1 = Stream.of(1, 2).onClose(() -> closed1.set(true));Stream s2 = Stream.of(3).onClose(() -> closed2.set(true));try (Seq s3 = f.apply(s1, s2)) {s3.collect(Collectors.toList());}assertTrue(closed1.get());assertTrue(closed2.get());};test.accept((s1, s2) -> seq(s1).concat(s2));test.accept((s1, s2) -> seq(s1).crossJoin(s2));test.accept((s1, s2) -> seq(s1).innerJoin(s2, (a, b) -> true));test.accept((s1, s2) -> seq(s1).leftOuterJoin(s2, (a, b) -> true));test.accept((s1, s2) -> seq(s1).rightOuterJoin(s2, (a, b) -> true)); }

局部函數是test ,它接受兩個Stream<Integer>參數,產生一個Seq<?>結果。

為什么不只寫私有方法呢?

當然,這也可以通過私有方法(經典的Java風格)解決。 但是有時候,使用局部作用域會更加方便,因為測試Consumer (局部功能)無法逃脫該單個單元測試的作用域。 僅應在此單一方法內使用。

另一種更經典的Java方法是定義一個本地類,然后將函數放入其中。 但是這種解決方案更加精益。

但是,一個缺點是,在Java中,以這種方式實現遞歸要困難得多。

  • 另請參閱: http : //stackoverflow.com/q/19429667/521799

翻譯自: https://www.javacodegeeks.com/2016/02/abusing-java-8-functionalinterfaces-local-methods.html

java ab工具

總結

以上是生活随笔為你收集整理的java ab工具_(ab)使用Java 8 FunctionalInterfaces作为本地方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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