亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

身份方法有什么作用,通用單例java

身份方法有什么作用,通用單例java

瀟湘沐 2022-07-27 16:32:01
在閱讀有效的 java 第 5 章第 27 條時它談論通用單例模式:現在假設您要提供一個標識函數。每次需要時都創建一個新的會很浪費,因為它是無狀態的。如果泛型被具體化,則每種類型都需要一個標識函數,但由于它們已被刪除,因此您只需要一個泛型單例。這是它的外觀:public class GenericSingleton<T> {    private static UnaryFunction<Object> IDENTIFY_FUNCTION = new UnaryFunction<Object>() {        @Override        public Object apply(Object args) {            return args;        }    };    @SuppressWarnings("unchecked")    public static <T> UnaryFunction<T> identityFunction() {        return (UnaryFunction<T>) IDENTITY_FUNCTION;    }    public static void main(String[] args) {        String[] strings = {"jute", "hemp", "nylon"};        UnaryFunction<String> sameString = identityFunction();        for (String s : strings) {            System.out.println(sameString.apply(s));        }        Number[] numbers = {1, 2.0, 3L};        UnaryFunction<Number> sameNumber = identityFunction();        for (Number n : numbers) {            System.out.println(sameNumber.apply(n));        }    }}我無法理解apply方法實際上做了什么!這就像獲取一個對象并返回它自己。為什么?一些無用的樣本?請有人告訴我用例嗎?
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

一個用例是Collectors.toMap().

假設您有一個由唯一鍵標識的項目列表,并且您希望Map從該唯一鍵到對象本身。

Collectors.toMap()需要兩個功能:

  • 一種從對象中提取密鑰

  • 另一個從對象中提取值

由于值應該是對象本身,因此您需要一個接受對象并返回相同對象的函數 - 這就是您的標識函數。


查看完整回答
反對 回復 2022-07-27
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號