Posted on 2009-05-24 20:05
dennis 閱讀(2195)
評論(5) 編輯 收藏 所屬分類:
java
最近遇到一個選擇題,在xmemcached中,get方法原來的簽名是這樣的:
public Object get(final String key) throws TimeoutException,InterruptedException,MemcachedException;
那么用戶使用的時候,需要自己轉(zhuǎn)型,也就是這樣
String value=(String)client.get("key");
后來我將get方法的簽名改成了泛型方法,xmemcached幫你做這個轉(zhuǎn)型工作,
public <T> T get(final String key) throws TimeoutException,InterruptedException, MemcachedException;
方法的實現(xiàn)因為有了個轉(zhuǎn)型,不得不加上抑制警告,
@SuppressWarnings("unchecked")
public final <T> T get(final String key) throws TimeoutException,
InterruptedException, MemcachedException {
return (T) get(key, DEFAULT_OP_TIMEOUT);
}
這樣用戶使用的時候,就不需要顯式轉(zhuǎn)型,而是xmemcached幫你做了,
String value=client.get("key");
后來,我仔細想了這個問題,盡管這里使用了泛型方法,似乎簡化了用戶的工作,然而卻丟掉了編譯警告,抑制警告讓用戶可能忽略這里可能的轉(zhuǎn)型失敗,這與泛型的初衷似乎不符。可是,另一個觀點冒出來支持我,用戶往memcached存進去一頭大象,他(她)不會希望取出來的時候變成驢子,我們幫他做這個轉(zhuǎn)型工作可以讓用戶使用起來更簡便。你怎么看呢?