
即使是在函數(shù)式接口的lambda 表達式中:
針對 Lambda 表達式進行設(shè)計
我認為lambda表達式有點像 泛型 – 泛型,我們經(jīng)常使用它們 (例如, 給 List<>
添加類型信息 ),但不常見的是我們把一個方法或類泛型化 (如: Person<T>
)。同樣的, 它就像我們使用通過lambdas包裝的 Streams API,但對我們來說更罕見的是創(chuàng)建一個需要 lambda 表達式參數(shù)的方法。
IntelliJ IDEA 可以幫助你引入一個函數(shù)化的參數(shù)
這里讓你可以使用 Lambda 表達式而非對象來 創(chuàng)建一個參數(shù) 。這個功能的好處在于其建議使用一個已有的 函數(shù)接口 來匹配這個規(guī)范。
這個將引導(dǎo)我們
使用已有的函數(shù)接口
當(dāng)開發(fā)者越來越熟悉 Java 8 代碼時,我們會知道使用例如 Supplier
和 Consumer 這樣的接口會發(fā)生什么,但是單獨再創(chuàng)建一個
ErrorMessageCreator
會讓我們很詫異并且很浪費時間。你可以翻閱 function package 來查看系統(tǒng)本身已經(jīng)給我們準備了什么。
為函數(shù)接口添加 @FunctionalInterface 注解
如果你真的需要創(chuàng)建自己的函數(shù)接口,那么就需要用這個 @FunctionalInterface 注解。這個注解似乎沒多大用處,但是 IntelliJ IDEA 會在接口不滿足這個注解要求的情況下予以提示。例如你沒有指定要繼承的方法: