第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

參數(shù)化類型的快捷方式?

參數(shù)化類型的快捷方式?

牧羊人nacy 2022-05-21 20:51:45
我正在使用需要生成大量代碼的代碼,List<Map<String,Object>>并且必須一直輸入例如代碼是很笨拙bob = new List<Map<String,Object>>的。我試圖創(chuàng)建一個空類class ListMap extends List<Map<String,Object>> {}但是隨后的方法List<Map<String,Object>>不接受 a作為它們的類型,如果我將它們分配給 a new ListMap(),我會從返回的方法中得到錯誤?;旧?,我希望 Java 將我的 ListMap 視為與 List> 相同...因為理論上至少通過繼承。List<Map<String,Object>>ListMap
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊

在這種情況下,最好的做法是為您ListMap的往返添加轉(zhuǎn)換方法List<Map<String, Object>>......知道如果您可以保留對它的引用并通過委托或?qū)⒏姆珠_,在這種情況下,您可以共同擴展.ListMapListListMapListMapListjava.util.*


class ListMap extends AbstractList<Map<String, Object>> {


   public ListMap(final Map<String, Object> list) { super(list); } 

   // or

   public static ListMap fromList(final List<Map<String, Object>> list) {

       if (list instanceof ListMap) {

          return (ListMap) list;

       } else {

          return new ListMap(list);

       }

   } 

}

如果提供的列表實際上是一個ListMap.


查看完整回答
反對 回復(fù) 2022-05-21
?
繁星點點滴滴

TA貢獻(xiàn)1803條經(jīng)驗 獲得超3個贊

由于您有方法返回List<Map<String,Object>>,但想將其分配給類型的變量ListMap,并且List<Map<String,Object>>可能實現(xiàn)為 a ArrayList<Map<String,Object>>,因此您不能使其直接與 a 分配兼容ListMap。


因此,您需要使用委托代理包裝返回的對象。首先,為List. 它們很容易創(chuàng)建,例如 Eclipse 可以通過Generate Delegate Methods...從“ Source”下拉菜單中選擇“ ”為您創(chuàng)建所有委托方法。


它應(yīng)該如下所示:


public class DelegatingList<E> implements List<E> {

    private final List<E> list;

    protected DelegatingList(List<E> list) {

        this.list = list;

    }

    @Override

    public int size() {

        return this.list.size();

    }

    @Override

    public boolean isEmpty() {

        return this.list.isEmpty();

    }

    @Override

    public boolean contains(Object o) {

        return this.list.contains(o);

    }

    // many other delegating methods from List

}

現(xiàn)在定義你的ListMap界面:


public interface ListMap extends List<Map<String,Object>> {

    public static ListMap newArrayList() {

        return wrap(new ArrayList<>());

    }

    public static ListMap wrap(List<Map<String,Object>> list) {

        if (list instanceof ListMap)

            return (ListMap) list;

        class Wrapper extends DelegatingList<Map<String,Object>> implements ListMap {

            protected Wrapper() {

                super(list);

            }

        }

        return new Wrapper();

    }

}

現(xiàn)在使用起來很簡單:


ListMap myListMap = ListMap.newArrayList();

methodAcceptingListOfMapOfStringToObject(myListMap);

ListMap x = ListMap.wrap(methodReturningListOfMapOfStringToObject());


查看完整回答
反對 回復(fù) 2022-05-21
  • 2 回答
  • 0 關(guān)注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號