Java下的框架编程(2)-对泛型的没心没肺的用法和为擦拭法站台

2005年10月28日 01:51:00
作者: 江南白衣

Java 5的泛型语法已经有太多书讲了,这里不再打字贴书。但真要理解泛式编程的使用,还是要回到它的故乡C++ 去,靠Java书上的例子只能学到syntax。
GP一定有用,不然Java和C#不会约好了似的同时开始支持GP。但大家也清楚,GP和Python式的动态OO语言属于不同的意识形态,如果是一人一票,我想大部分的平民程序员更热衷动态OO语言的平白自然。

我对GP的没心没肺的用法:
胡乱总结泛型的三点作用:
第一是泛化,可以拿个T代表任意类型。 但GP是被C++严苛的静态性逼出来的,落到Java、C#这样的花语平原里,所有对象除几个原始类型外都派生于Object,一样能够很泛,所以Java的Collection类没有范型一样过得好好的。再加上Java的反射功能,在泛的方面GP不占多大优势。
第二是收敛,就是增加了类型安全,减少了强制类型转换的代码。这点倒是Java Collection历来的弱项。
第三是可以在编译期搞很多东西,比如MetaProgramming。但除非能完全封闭于框架内部,框架的使用者和扩展者都不用学习这些东西的用法,否则那就是自绝于人民的票房毒药。C++的MetaProgramming好厉害吧,但对比一下Python拿Meta Programming生造一个Class出来的简便语法,就明白什么才是真正的叫好又叫座。

所以,作为一个架构设计师,只应该用Java泛型三样特质中的收敛特质,本着对人民负责的精神,用泛型使框架更加类型安全,更少强制类型转换。
而且Java GP的擦拭法实现,使框架的范型特性对使用者保持了可用可不用的选择。

擦拭法避免了Java的流血分裂 :
大家经常骂Java GP的擦拭法实现,但我觉得多亏于它的中庸特性---如果你用就是范型,不用就是普通Object,避免了Java阵营又要经历一场to be or not to be的分裂。
最大的例子莫过Java 5的Collection 框架, 比如有些同学坚持认为自己不会白痴到类型出错,而且难以忍受每个定义的地方都要带一个泛型定义List〈Goods〉 ,不用强制类型转换所省下的代码还不够这里花的(对了,java里面还没有tyepdef.....),因此对范型十分不感冒,这时就要齐齐感谢这个搽拭法让你依然可以对一个泛型框架保持非泛型的用法了...

系列文章:
Java下的框架编写(1)--序
Java下的框架编程(2)-对泛型的无聊用法和为擦拭法站台
Java下的框架编程(3)--关于反射的碎话
Java下的框架编程(4)--Annotation vs XML vs Interface 最新一Round
Java下的框架编程(5)--cglib应用
Java下的框架编程(6)--asm(待写)


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=518171


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值