在Java中創建function objects
(一種無狀態對象,用於導出可用於其他對象的單一方法)的最佳做法是什麼?在Java中導出函數對象的最佳做法是什麼?
回答
它的啓發看看forthcoming Java 8 functional interfaces
Java的8類庫有一個新的包,java.util.functions,其中 包含幾個新功能接口。其中許多可以與Collections API一起使用 。
如果你遵循這裏展示的模式,你將有一個功能接口(一個支持一個方法的接口)和一個沒有成員的實現。你的函數對象不應該調用可能改變它們狀態的方法參數的任何方法(即展示副作用)。不幸的是,你不能強制執行 - 你必須依靠這個慣例。
這可以用功能性語言強制執行嗎? – Geek 2013-02-25 13:42:57
我相信強制執行不變性的語言可以強制執行此操作。也許還有C++及其強大的常量語義,儘管我不想在此引用它! – 2013-02-25 13:44:39
Java是一種面向對象的編程語言,因此使用策略設計模式。
雖然策略在此工作,但不需要策略對象僅實現一種方法,因爲功能對象需要 – 2013-02-25 13:43:52
Java8應該有lambda表達式來簡化功能接口實現的創建。 Java8之前,你可以看看番石榴庫提供什麼: Functional Explained
這裏是文件的摘錄:
番石榴提供了兩種基本「功能」界面: 功能,它具有單一的B法適用(A輸入)。函數的實例通常被認爲是透明的 - 沒有副作用 - 並且與等號一致,也就是說,a.equals(b)意味着function.apply(a).equals(function.apply(b) )。 Predicate,它具有單一方法布爾應用(T輸入)。通常預計謂詞的實例是無副作用的並且與等號一致。
好的評論後,這裏是一個答案: 還有就是要傳遞一個函數沒有簡單/便捷方式。
大多數時候,你會宣佈它實現了例如像一個接口的內部類中,Comparator
: http://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html
,作爲參數,給人們帶來了很多的所謂的設計圖形的功能不能順利通過的事實,在那裏傳遞聲明具有這些函數的對象類/接口。
正如其他人的生命中提到將得到一個輕鬆一點與Java 8
- 1. 將XML轉換爲Java對象的最佳做法是什麼?
- 2. 創建數百個對象的最佳做法是什麼?
- 3. 在JavaScript中構造函數的最佳做法是什麼?
- 4. 在java中每個鍵的計數最佳做法是什麼
- 5. 最佳做法是什麼?
- 6. 命名屬性是對象的最佳做法是什麼?
- 7. 將函數放入對象的最佳方法是什麼?
- 8. 實例化JavaScript對象時的最佳做法是什麼?
- 9. 命名存檔對象的最佳做法是什麼?
- 10. 春季鎖定域對象的最佳做法是什麼?
- 11. 導出和導入mysql數據庫的最佳做法是什麼?
- 12. 在grails中保存一對多關聯對象的最佳做法是什麼?
- 13. 在Resharper中跳出右括號的最佳做法是什麼?
- 14. 在C++中聲明類中的對象的最佳做法是什麼?
- 15. 將大數據集導入MongoDB的最佳做法是什麼?
- 16. 訪問函數內部配置的最佳做法是什麼?
- 17. 從函數返回錯誤的最佳做法是什麼?
- 18. 包含jQuery ext函數的最佳做法是什麼?
- 19. 將R對象導入Python的最佳方法是什麼?
- 20. log4cxx的最佳做法是什麼?
- 21. 什麼是ViewModel的最佳做法
- 22. Java:什麼是讀取序列化對象的最佳方法?
- 23. 在c#中處理圖像對象的最佳做法是什麼?
- 24. 在.NET中加密數據的最佳做法是什麼?
- 25. 在JSP中驗證參數的最佳做法是什麼?
- 26. 在ng-grid中做列總數的最佳方法是什麼?
- 27. 在JSP中呈現JSON數據的最佳做法是什麼?
- 28. 在Swift中迭代AnyObject數組的最佳做法是什麼?
- 29. 什麼是在PHP中返回函數的邏輯錯誤的最佳做法
- 30. 對話框中文字的最佳做法是什麼?
你可以通過看'Comparator'接口得到一些啓示:http://docs.oracle.com/javase/6/docs /api/java/util/Comparator.html。這是一個開放式問題。 – 2013-02-25 13:30:27
[Java中函數指針最接近的替代物是什麼?](http://stackoverflow.com/questions/122407/whats-the-nearest-substitute-for-a-function-pointer-in-java) – Raedwald 2013-02-25 13:32:21