Java8自定義帶泛型的函數式接口
導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面我們來看看Java8自定義帶泛型的函數式接口,希望對大家有所幫助。
Java8自定義帶泛型的'函數式接口,今天寫程序,用的是Java8的特性,Lamda表達式。大家都應該知道,實際上它就是一個接口的實現,像是匿名內部類一樣。它是有規則的,只能實現函數式接口,什麼函數式接口,就自己百度吧。
我有個需求,就是需要寫個公共方法,其中有個參數是對應的實體,也就是説,我這個參數可以接收任何實體,怎麼辦呢??
於是想到了泛型,先看我原來是怎麼寫的:
1234567 | @FunctionalInterface public interface CommonResponseConvert { public <t> DataResponse entityResponse(List<map<string,string>> listMapData, HttpServletRequest request,<u>T t</u>, int result) throws Exception; } </map<string,string></t> |
注意我標紅的地方,使用了泛型。在看我調用的時候:
1 | CommonResponseConvert response = <u>(datalist,req,cls,res) -></u> {} |
標紅的地方一直報錯,Illegal lambda expression: Method entityResponse of type CommonResponseConvert is generic 。
於是,我習慣性的去網上找答案,但很遺憾--------也不知道大家是不是吝嗇於自己的知識,不願意外漏。結果導致我一無所獲。
後來中午吃完飯回來,腦補了下。能不能找個已經寫好的接口模仿下呢??當然可以了。。。。。。看源碼:
1234567891011 | public interface Converter<s, t= "" > { /** * Convert the source object of type {@code S} to target type {@code T}. * @param source the source object to convert, which must be an instance of {@code S} (never {@code null}) * @return the converted object, which must be an instance of {@code T} (potentially {@code null}) * @throws IllegalArgumentException if the source cannot be converted to the desired target type */ T convert(S source); }</s,> |
如果這時候還有人想問我怎麼查看源碼,那我可就要打人了!自己百度去吧。
看到了吧,他是在接口的名稱上定義的,那我也模仿下吧,立刻改代碼:
123456 | @FunctionalInterface public interface CommonResponseConvert<t> { public DataResponse entityResponse(List<map<string,string>> listMapData, HttpServletRequest request,T t, int result) throws Exception; }</map<string,string></t> |
標紅的是已加的泛型。再看看調用:
1 | CommonResponseConvert<t> response = (datalist,req,t,res) -> {}</t> |
這時候已經不報錯了,可以完成接下來的工作了。
結尾:新東西出來多少會有些不適應,希望大家能夠克服困難,不要怕,我始終堅持一個道理---------技術,不是你不會;也是不特別難。而是因為你並不熟悉而已。
所以,大家只要堅持,熟能生巧,一切自然迎刃而解。
-
新手學習Java最高效的10個計劃
對於新手來説學習Java如同堵天書,下面是本站小編收集的關於新手學習Java最高效的10個計劃,希望可以為您的學習帶來幫助!計劃一:瞭解未來技術發展方向兩耳不聞窗外事,在如今是不合適的,尤其是在瞬息萬變的互聯網時代,作為一個開發者技術跟不上可以去專研,思想要跟不上,...
-
講述java中enum的用法
本文實例講述了java中enum的用法。分享給大家供大家參考。具體分析如下:1.基本用法複製代碼代碼如下:enumDay{SUNDAY,MONDAY,TUESDAY,WENDSDAY,THURSDAY,FRIDAY,SATURDAY;}枚舉是常量,所以應該用大寫。2.枚舉是對象枚舉隱含地繼承了,所以它具有的.屬性和方法。遍...
-
java中String和StringBuffer的區別
java中String和StringBuffer的區別String這個類是Java中使用得最頻繁的類之一,以下就是小編精心推薦java中String和StringBuffer的區別,希望對大家有幫助!看到這個講解的不錯,所以轉一下在java中有3個類來負責字符的操作。acter是進行單個字符操作的,ng對一串字符...
-
Java技術怎麼學習
對於很多隻會C語言的初學者而言,面對java基礎語法學習,反而感覺很難,其實其中最大的問題不是語法難,而是一種編程思想的轉變。怎麼學習才是正確的呢?下面是相關的知識,歡迎閲讀。1.概述學過一段時間的同學一定會覺得Java學習最頭疼的不是語法結構的繁雜,而是Java本身...