今天在閱讀其餘人的源碼的時候發現了這樣一句話 html
Observable.zip(mLoginObservable, mBannerObservable, mArticleObservable, this::createResponseMap)
最後的一個this::createResponseMap是什麼鬼,臣妾看不懂呀!!!!
而後發現createResponseMap是一個方法
@NonNull private HashMap<String, Object> createResponseMap(BaseResponse<LoginData> loginResponse, BaseResponse<List<BannerData>> bannerResponse, BaseResponse<FeedArticleListData> feedArticleListResponse) { HashMap<String, Object> map = new HashMap<>(3); map.put(Constants.LOGIN_DATA, loginResponse); map.put(Constants.BANNER_DATA, bannerResponse); map.put(Constants.ARTICLE_DATA, feedArticleListResponse); return map; }
可是本寶寶仍是看不懂啊。java中何時出了這樣的異端了?java
後面通過百度,發現::是java8 中新引入的運算符app
這個博客有說明ide
https://www.cnblogs.com/tietazhan/p/7486937.html?tdsourcetag=s_pctim_aiomsgthis
可是網上的博客仍是教程說的都是Class::function。而不是我如今遇到的this::function。spa
可是後面通過個人思考,實際上是同樣的。只不過Class::function的時候function是屬於Class的,應該是靜態方法。code
而this::function的funtion是屬於這個對象的。htm
因此上面的代碼的等效方法是對象
addSubscribe(Observable.zip(mLoginObservable, mBannerObservable, mArticleObservable, new Function3<BaseResponse<LoginData>, BaseResponse<List<BannerData>>, BaseResponse<FeedArticleListData>, HashMap<String,Object>>() { @Override public HashMap<String, Object> apply(BaseResponse<LoginData> loginDataBaseResponse, BaseResponse<List<BannerData>> listBaseResponse, BaseResponse<FeedArticleListData> feedArticleListDataBaseResponse) throws Exception { return createResponseMap(loginDataBaseResponse,listBaseResponse,feedArticleListDataBaseResponse); } })
好噠,打完收工。簡而言之,就是一種語法糖而已,是一種簡寫blog