<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无码国产精品色| 全免费毛片在线播放| 亚洲免费在线观看视频| 毛片在线看免费版| 亚洲精品美女久久7777777| 成年大片免费视频| 亚洲成熟丰满熟妇高潮XXXXX| 大陆一级毛片免费视频观看i| 色偷偷亚洲第一综合网| 亚洲综合久久夜AV | 国内永久免费crm系统z在线| 久久精品亚洲精品国产色婷| 嫖丰满老熟妇AAAA片免费看| 亚洲videosbestsex日本| 永久黄网站色视频免费直播 | 亚洲国产美女视频| 4399好看日本在线电影免费| 精品亚洲456在线播放| 日韩免费在线观看| 国产va免费精品| 亚洲AV无码国产丝袜在线观看| 91精品成人免费国产片| 亚洲色欲色欱wwW在线| 国产亚洲美日韩AV中文字幕无码成人| 你懂的网址免费国产| ASS亚洲熟妇毛茸茸PICS| 免费永久在线观看黄网站| 国产午夜无码精品免费看动漫| 亚洲国产成人久久综合一区| 国产成人免费A在线视频| 国产在线一区二区综合免费视频| 亚洲午夜电影在线观看| 免费很黄很色裸乳在线观看| 99久久免费中文字幕精品| 亚洲AV噜噜一区二区三区| 亚洲熟妇无码八AV在线播放| 好男人视频社区精品免费| 两性色午夜视频免费播放|