作者aleelyle (lyle)
看板java
标题Re: [问题] 自订型别的习惯
时间Mon Jun 18 18:25:42 2012
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