1. 程式人生 > >Java函式返回值的“魔術”轉型

Java函式返回值的“魔術”轉型

先看一段程式碼:

public Object get(String name) {
  return map.get(name);
}

其中獲取的返回值,可能是字串,也可能是數字等等。那麼呼叫它的程式碼,可能就充斥著各種各樣的轉型:

String value1 = (String)get("key1");
Integer value1 = (Integer)get("key2");
Date value1 = (Date)get("key3");

這些轉型的程式碼,經常弄得整個程式碼片段冗長和寧亂,降低了程式碼的可讀性。其實,我們只要對函式進行一下改造就行,利用返回值來作為範型的型別:

public T get(String name) {
  return (T)map.get(name);
}

於是:

String value1 = get("key1");
Integer value1 = get("key2");
Date value1 = get("key3");

這一看,哇塞,漂亮多了!借用範型,我們巧妙地把轉型也“封裝”進函式裡面了!