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