快速业务通道

使用Java范型需要注意的地方 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

使用Java范型需要注意的地方

时间:2011-02-07

静态方法要想范化,需要指定其类型参数

非范化类型中的实例方法要想范化,也需要制定其类型参数。

范化类型中的实力方法可以直接使用其类型本身的类型参数。

范型不是协变的,即List<Integer>不是List<Number>的子类。

不能实例化范型类型的数组,即new List<String>[3] 是不合法的,除非类型参数是一个未绑定的通配符,即new List<?>[3] 是合法的。

构造延迟,在代码编写时我们不能通过类型参数来构造一个该类型的实例,原因是我们不知道如何构造,类型参数的实际类型是在运行时确定的。

对于注意5所描述的问题我们有一个解决方法是List<String> list = (List<String>[]) new Object[3];但是如果是运行时建立数组呢,类型信息是运行时确定的,那就换种写法T[] tarray = (T[]) new Object[3];

上面的数组构造是不被推荐的,最好的方法是将类型信息传递到方法中,如method(Class<V> type) { V[] array = (V[])Array.newInstance(type, length); },可以参考ArrayList类的toArray(T[] a)方法的实现。

构造通配符引用,如果set是一个Set<?>类型,则Set<?> set2 = new HashSet<?>(set);是不合法的,改成Set<?> set2 = new HashSet<Object>(set);就合法了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号