看板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