Re: [問題] 自訂型別的習慣

看板java作者 (lyle)時間13年前 (2012/06/18 18:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
It's an anti-pattern 簡而言之 你想做到 C/C++ typedef 的功能 但是用了一個不全等於typedef的東西 可能的問題: 如果有個 method f 長的像這樣 void f(Tuple t){...} 那麼將不能傳HashMap<String,String>這個type的物件給這個method 所以這兩個是不能互換的(和typedef不同) 影響到的是所有會呼叫 f 的地方 所以下面的文章中提到這個anti-pattern有傳染性(contagious) 懶得打太多 詳細看這 http://www.ibm.com/developerworks/java/library/j-jtp02216/index.html ※ 引述《chen1025 (小陳)》之銘言: : 各位會常在較複雜的資料型別上定義一個新的資料型別嗎? : 例如,從資料庫讀取每一筆資料, : 都每一筆資料的屬性和值,都用HashMap的資料結構 : 但是每次寫 : HashMap<String,String> myTuple=new HashMap<String,String> : 感覺有點冗長 : 所以定義了一個資料結構 : class Tuple extends HashMap<String,String>{ : } : 如果要存取整個資料庫,就在定義一個資料結構 : class DB extends ArrayList<Tuple>{ : } : 如果要用的時候,就寫成 : DB myDB=new DB(); : Tuple myTyple=new Tuple(); : myDB.add(myTuple); : 這樣子寫有問題嗎? : 另外還有,如果物件名稱和類別名稱用同一個相同的名稱, : 是否會產生問題? : 也就是 : Tuple Tuple=new Tuple(); : 這樣子寫法編譯器也會過,但是不知道會不會日後執行有錯誤? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.189.122
文章代碼(AID): #1Ftm8ezC (java)
討論串 (同標題文章)
文章代碼(AID): #1Ftm8ezC (java)