Java下的Framework编写--泛型的应用

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

如前篇:Java下的Framework编写(反射,泛型,元数据,CGLib,AOP,IOC)(1)--序

JDK5.0支持泛型后,Collection类便集体换装,好处一是Collction的调用者不用再对返回值进行显式的转换,二是获得了编译期的类型安全。

除了应用Collecton的泛型特性外,JDK5.0还允许我们编写自己的泛型类。

我就理所当然的期望,通过应用泛型,能够让框架获得比上面两点更多的好处。但用过一阵子之后一总结,发现因为著名的擦拭法,因为拿不到T.class,也就不可以从T来newInstance(),泛型在框架内的表现,仍然只能带来以上两个优点。

一,调用者不用对返回值进行显式转换。

不过对于抠门的Programer来说,这点还要计算一下,搞不好省了一个地方的显式转换,却多了三四个地方要显式定义泛型。

不过泛型有个好的地方是,如果调用者不显式定义<T>,那用T定义的地方会自动转回Object,如果T是用<T extends FooClass>定义的,就自动转回FooClass,和你不用泛型时的结果一样。

所以,作为框架,应该提供这个使用泛型与否的选择给用户。合不合算由调用者自己决定和选择。

二,编译期的类型检查

是编译期,对于越多越多使用反射和hashMap进行晚绑定,离类型安全越来越远的java来说,T和Class<T>的限制是个不错的救赎。

仍然在想有没有第3个好处。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有