<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    方法簽名,泛型濫用?

    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)型工作可以讓用戶使用起來更簡便。你怎么看呢?
        
         


    評論

    # re: 方法簽名,泛型濫用?  回復  更多評論   

    2009-05-24 23:23 by megan
    學習了,
    我覺得忠于用戶感受是最重要的。

    # re: 方法簽名,泛型濫用?  回復  更多評論   

    2009-05-25 19:30 by ecbeta
    這個似乎有點問題. 因為你有一個方法是需要轉(zhuǎn)型的,那為什么那個方法不是泛型的呢?

    # re: 方法簽名,泛型濫用?  回復  更多評論   

    2009-06-07 01:35 by cast
    try this:

    public final <T> T get(final String key, Class<T> clz) throws TimeoutException,
    InterruptedException, MemcachedException {
    return clz.cast(get(key, DEFAULT_OP_TIMEOUT));
    // if it is not T type, it will raise ClassCastException in cast() method.
    }

    # re: 方法簽名,泛型濫用?  回復  更多評論   

    2009-06-07 07:14 by dennis
    是的,這是個辦法,然后這與讓用戶自己轉(zhuǎn)型沒有多大區(qū)別,用戶還是傳入一個額外的參數(shù),反而更麻煩。

    # re: 方法簽名,泛型濫用?[未登錄]  回復  更多評論   

    2011-07-15 12:39 by Jeff
    個人覺得這里還是不要范型的好。
    作為一個基礎(chǔ)接口,此處存的對象千奇百怪,調(diào)用者更應該負責將對象cast回自己所需要的對象,因為他自己必須明白自己曾經(jīng)放了什么對象。

    主站蜘蛛池模板: 永久在线观看免费视频 | 免费无码成人AV片在线在线播放| 亚洲国产精品成人久久| 亚欧洲精品在线视频免费观看 | 亚洲综合区图片小说区| 先锋影音资源片午夜在线观看视频免费播放| 亚洲日韩精品一区二区三区无码| 黄 色一级 成 人网站免费| 亚洲熟妇av一区二区三区| 好男人资源在线WWW免费| 亚洲精品无码乱码成人| 成全在线观看免费观看大全| 久久精品国产亚洲av日韩| 国产成人yy免费视频| 亚洲AV无码国产剧情| 亚洲国产精品自在拍在线播放| 一级黄色免费网站| 亚洲男人的天堂www| 色欲国产麻豆一精品一AV一免费| 亚洲黄色免费观看| 最近2019中文字幕mv免费看| 亚洲a∨国产av综合av下载| 亚洲成年人啊啊aa在线观看| 国产免费网站看v片在线| 亚洲国产品综合人成综合网站| 成人黄软件网18免费下载成人黄18免费视频| MM1313亚洲精品无码久久| 国产成人亚洲影院在线观看| 精品无码无人网站免费视频| 亚洲最大的成人网| 久久精品夜色噜噜亚洲A∨| 无码人妻AV免费一区二区三区| 亚洲午夜无码久久| 亚洲一区无码中文字幕| 久久www免费人成看片| 欧洲乱码伦视频免费国产| 久久综合亚洲色HEZYO社区| 国产做床爱无遮挡免费视频| 精品成人免费自拍视频| 亚洲欧美日韩国产成人| 国产亚洲一区二区精品|