java 為什么java中聲明多用Map,List而不是具體實(shí)現(xiàn)類(lèi)型?
為什么java中聲明多用Map,List而不是具體實(shí)現(xiàn)類(lèi)型?設(shè)計(jì)模式應(yīng)該是適配器模式。至于為什么要用map來(lái)實(shí)現(xiàn),我理解目的是用map的鍵來(lái)實(shí)現(xiàn)set的值不重復(fù)。您可以看到HashSet的add方法使
為什么java中聲明多用Map,List而不是具體實(shí)現(xiàn)類(lèi)型?
設(shè)計(jì)模式應(yīng)該是適配器模式。
至于為什么要用map來(lái)實(shí)現(xiàn),我理解目的是用map的鍵來(lái)實(shí)現(xiàn)set的值不重復(fù)。
您可以看到HashSet的add方法使用了HashMap的put方法,它只是將值作為HashMap中的鍵
,put的值直接定義了一個(gè)空對(duì)象
~]/**來(lái)獲取字段的類(lèi)型。如果是復(fù)合對(duì)象,則獲取泛型類(lèi)型**@param field*@return*/private static class getfieldclass(field field){class fieldclazz}=字段.getType()如果(fieldClazz.isAssignableFrom文件( List.class類(lèi))){類(lèi)型fc=field.getGenericType類(lèi)型()//如果是列表類(lèi)型,獲取其泛型類(lèi)型if(FC instanceof parameteredType)//如果是泛型參數(shù)類(lèi)型{parameteredType Pt=(parameteredType)FC fieldclazz=(Class)pt.getActualTypeArguments參數(shù)()[0]//獲取泛型中的類(lèi)類(lèi)型對(duì)象。}這是一個(gè)泛型類(lèi)型,用于確保list的輸入類(lèi)型與ArrayList的輸入類(lèi)型一致;例如:list<string> list=new ArrayList<integer>()
2。上面的代碼列表指定類(lèi)型為string,而傳入的實(shí)際整數(shù)將不會(huì)以這種方式編譯。
3. 如果在列表中指定了泛型類(lèi)型,編譯將檢測(cè)到它。如果未定義泛型類(lèi)型,則編譯將通過(guò),如果操作不合理,則會(huì)報(bào)告錯(cuò)誤。