作者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