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

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

實施通用地圖

實施通用地圖

絕地?zé)o雙 2023-06-28 15:38:20
我有一個對象(Object o),它有一個父類作為屬性,該父類有兩個抽象方法和一個映射作為屬性。一個是 validateMap(),另一個是 extractMap()。然后我有兩個子類,我在其中實現(xiàn)這兩個方法并使用 extractMap() 方法設(shè)置超級地圖。我想做的是根據(jù)一些業(yè)務(wù)邏輯,每個子類定義不同類型的地圖。ParentClass parent = new ParentClass();Object o = new Object();if (business logic deciding which type of map needed TypeA or TypeB){ChildClassTypeA childClassA = new ChildClassA();childClassA.extractMap();o.setPArentClass(childClassA);}ParentClass{public Map <? , ? > mapabstract void extract()abstract void validate()}ChildClassTypeA{public void extract(){ Map<String, TypeA > map = new Map<>(); super.setMap(map);}public void validate(){}}ChildClassTypeB{public void extract(){ Map<String, TypeB > map = new Map<>(); super.setMap(map);}public void validate(){}}我的問題是如何在父類中定義映射屬性,以便能夠通過子類接受兩種不同的類型
查看完整描述

1 回答

?
蝴蝶不菲

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

將通用參數(shù) T 添加到 ParentClass 并在映射定義中使用它?,F(xiàn)在,任何擴(kuò)展 ParentClass 的類都必須指定映射值的類型。


import java.util.Map;


public abstract class ParentClass<T> {

    public Map <String , T > map;

    abstract void extract();

    abstract void validate();


    protected void setMap(Map <String , T > pMap)

    {

        this.map=pMap;

    }

}

子類看起來像:


import java.util.HashMap;

import java.util.Map;


public class ChildClassTypeA extends ParentClass<TypeA> {


    @Override

    void extract() {

        Map<String,TypeA> myMap=new HashMap<>();

        setMap(myMap);

    }


    @Override

    void validate() {


    }

}

現(xiàn)在你甚至可以讓 ParentClass 實例化地圖:


public abstract class ParentClass<T> {

    public Map <String , T > map = new HashMap<>();

    ...

}


查看完整回答
反對 回復(fù) 2023-06-28
  • 1 回答
  • 0 關(guān)注
  • 223 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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