作者chen1025 (小陳)
看板java
標題[問題] 自訂型別的習慣
時間Mon Jun 18 07:36:30 2012
各位會常在較複雜的資料型別上定義一個新的資料型別嗎?
例如,從資料庫讀取每一筆資料,
都每一筆資料的屬性和值,都用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: 140.119.157.8
1F:→ bitlife:完全沒必要,除非真的有蓋寫method或實作其它介面 06/18 07:53
2F:→ bitlife:若是想實作可抽換,那反該是Tuple extends Map而非HashMap 06/18 07:56
3F:推 LaPass:1沒必要,嫌字長按alt+/就會跳出選項讓人選了 06/18 08:18
4F:→ LaPass:Tuple Tuple=new Tuple();這樣寫不會出錯,但人會亂掉。 06/18 08:21
5F:推 PsMonkey:我倒是覺得多建一個 Tuple class 沒啥不好..... 06/18 09:35
6F:→ PsMonkey:當然,好處也沒有非常顯著就是了 XDXD 06/18 09:35
7F:推 PsMonkey:改成 has a 應該會更好... 雖然還是沒特別必要 XDXD 06/18 09:59
8F:推 AI3767:在java7可以縮短一點點 XD 06/18 11:23
9F:推 kewang:PsMonkey 你的意思是用delegate的方式嗎?? 06/18 13:16
10F:→ LaPass:java 有 delegate嗎? 沒聽說過說..... 06/18 13:19
11F:推 kewang:我是指概念啦 不過剛看了一下 用delegate這個名詞也不恰當 06/18 13:23
12F:推 kewang:btw, 用Tuple當變數名不太好吧,改用tuple比較適當。 06/18 13:27
13F:推 PsMonkey:我只知道 is-a 跟 has-a 的差別,太難的我不會 [遮臉] 06/18 14:22
14F:推 LaPass:話說... java se8好像就會有lambda、delegate之類的東西了 06/18 14:29
15F:→ jej:delegate: SCWCD考試題目之一,還有原PO的作法視情況~ 06/18 14:36
16F:→ jej:明知道不需要而弄就有脫褲子放屁知嫌.. 06/18 14:38
17F:推 LaPass:原來是Business Delegate 我以為是C#關鍵字delegate之類的 06/18 14:47
18F:推 kimkao:跟delegate沒有關係,這純粹只是物件之間的聚合關係 06/18 22:01