看板java
標 題Re: 請問 Java Templete
發信站新竹師院風之坊 (Sat Jul 3 03:46:59 2004)
轉信站ptt!ctu-reader!ctu-gate!ctu-peer!news.nctu!news.NHCTC!nhctc_bbs
※ 引述《[email protected] (Alien)》之銘言:
> ※ 引述《[email protected] (opd)》之銘言:
>
> 約略看過原文, 當中說到的 Generics 的缺失好像
> 與 inheritence 無關?...
> 因為看不到 iostream 兄的原文, 所以順便
> 在這裡回.... :)
> 我說的 data collection 與 streaming 是指 STL
> 而已. 因為之前有人提及會不會有 Java 的 STL.
> 我只是指出 C++ 中的 STL 主要是為了 data collection
> 及 streaming 而已 :)
> 你提供的資料實在太好了 :)
> 的確看來 Java 的 Generic (C# 的也一樣嗎?)
> 相比起 C++ 的 template 還是差很遠.
> 正如 Sun 所給的 example, 暫時來說 Java 的
> Generic 的功能主要還只是作 auto-casting 及
> compile-time type checking.
> 倒是, 在一般的 template 應用, 這大概就夠提
> 供其中 70% 的要求了. 雖然 Java Generic 不及
> C++ 的 template, 但至少還差強人意吧? :)
> Alien
Java的焦點一直是純物件導向的語言,因此在創造時,就沒有考慮到
Generics的問題,在以後即使是JDK 1.5加入了Generic的功能,但仍
舊沒法子在Bytecode中實作出 Generic,這一點C#倒有先見之明,在
IL code中,預設了這塊空間,因此論執行效率,C#是優於Java的,
但不管是Java或是C#在generic的實作上,皆遠遠不及C++,在 Java/C#
裡頭,Generic 機制仍是鎖定在 Container的部份,但是光看STL就知
道template絕不止於此,更有甚者,大家看到ATL/WTL的架構,利用
tempalate的機制巧妙配合multiple inheritance,可以避免掉MI過
程中,動態繫結(dynamic binding)所造成的困擾。Modern C++
Design一書中談到,多重繼承與泛型編程,各有優缺點,很妙的是,
兩者的優劣之處正好互補。繼承隨之而來的是動態的多型(polymorphism)
,泛型隨之而來的是靜態的多型。你不得不佩服C++之父,他在創造
C++之時,就不獨自把C++鎖定在任何一種編程範圍。他定義C++就是
更好的C
物件基底的編程(ADT)
物件導向
泛型編程
現在從C++ 不斷推出的Library看來,template 大有後來居上的感
覺,尤其是WTL更被視為Microsoft有史以來的顛峰之作。
--
包龍星 : 大家聽到了,是他讓打我們才動手的。
師爺 : 這樣的要求,我一輩子都沒聽到過。
--
○ Origin: 新竹師院 風之坊﹝bbs.NHCTC.edu.tw﹞From: 218-174-12-77.dynamic.hinet.net