注册
 找回密码
 注册
江西广告网
查看: 468|回复: 0
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-2-28 11:12:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
1、静态方法要想范化,需要指定其类型参数 2、非范化类型中的实例方法要想范化,也需要制定其类型参数。 3、范化类型中的实力方法可以直接使用其类型本身的类型参数。 4、范型不是协变的,即List<Integer>不是List<Number>的子类。 5、不能实例化范型类型的数组,即new List<String>[3] 是不合法的,除非类型参数是一个未绑定的通配符,即new List<?>[3] 是合法的。 6、构造延迟,在代码编写时我们不能通过类型参数来构造一个该类型的实例,原因是我们不知道如何构造,类型参数的实际类型是在运行时确定的。 7、对于注意5所描述的问题我们有一个解决方法是List<String> list = (List<String>[]) new Object[3];但是如果是运行时建立数组呢,类型信息是运行时确定的,那就换种写法T[] tarray = (T[]) new Object[3]; 8、上面的数组构造是不被推荐的,最好的方法是将类型信息传递到方法中,如method(Class<V> type) { V[] array = (V[])Array.newInstance(type, length); },可以参考ArrayList类的toArray(T[] a)方法的实现。 9、构造通配符引用,如果set是一个Set<?>类型,则Set<?> set2 = new HashSet<?>(set);是不合法的,改成Set<?> set2 = new HashSet<Object>(set);就合法了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表