黑马程序员技术交流社区

标题: 数组可以定泛型吗? [打印本页]

作者: Jpor    时间: 2014-7-24 09:19
标题: 数组可以定泛型吗?
视频里泛型一般都是集合或定义方法上的参数适用,数组上可以吗
作者: idency    时间: 2014-7-24 09:45
不可以,泛型是针对引用型数据的!数组中一般是基本数据类型,所以数组是没有泛型的
作者: Jpor    时间: 2014-7-24 09:55
idency 发表于 2014-7-24 09:45
不可以,泛型是针对引用型数据的!数组中一般是基本数据类型,所以数组是没有泛型的 ...

有同学说能通过反射来实现

在反射那找了几遍都没看到,是反射技术开发框架原理的延伸吗?
作者: idency    时间: 2014-7-24 10:00
Jpor 发表于 2014-7-24 09:55
有同学说能通过反射来实现

在反射那找了几遍都没看到,是反射技术开发框架原理的延伸吗? ...

额,通过反射给数组加泛型我还真的不清楚,没听说过啊:L 反射应该不是开发框架的延伸,应该属于框架的基础更合适!
作者: Jpor    时间: 2014-7-24 10:09
idency 发表于 2014-7-24 10:00
额,通过反射给数组加泛型我还真的不清楚,没听说过啊 反射应该不是开发框架的延伸,应该属于框架的基础更 ...

恩,我也是没头绪,还是谢谢了

开发框架那就了解能用反射来获取以后的类,不知道数组定义泛型的思路是否这样来的
作者: fantacyleo    时间: 2014-7-24 10:12
Jpor 发表于 2014-7-24 09:55
有同学说能通过反射来实现

在反射那找了几遍都没看到,是反射技术开发框架原理的延伸吗? ...

数组应该是可以的,你写一个一维和二维数组的Class对象相等性比较,用1.6以上的jdk编译会出错,出错信息中就包含? extends int[]
作者: 阳光的嘉主角    时间: 2014-7-24 10:18
数组 用得着吗  ....
作者: Jpor    时间: 2014-7-24 10:26
fantacyleo 发表于 2014-7-24 10:12
数组应该是可以的,你写一个一维和二维数组的Class对象相等性比较,用1.6以上的jdk编译会出错,出错信息 ...

验证通过的话,具体应该如何定义,求大大解答
作者: Jpor    时间: 2014-7-24 10:27
阳光的嘉主角 发表于 2014-7-24 10:18
数组 用得着吗  ....

我也是没用到过。。碰上就尽量去解决下好了
作者: fantacyleo    时间: 2014-7-24 10:49
Jpor 发表于 2014-7-24 10:26
验证通过的话,具体应该如何定义,求大大解答

我正看到数组反射的视频,看完后告诉你哈
作者: 掌柜的--刘饮    时间: 2014-7-24 12:31
本帖最后由 掌柜的--刘饮 于 2014-7-24 12:33 编辑

数组反射  张老师  高新技术里面有讲到java.lang.reflect.Array
作者: fantacyleo    时间: 2014-7-24 12:58
Jpor 发表于 2014-7-24 10:26
验证通过的话,具体应该如何定义,求大大解答

先问一下,你说的数组定泛型是指:ArrayList<String>[] as = new ArrayList<String>[10]这种形式么?
作者: Jpor    时间: 2014-7-24 13:03
fantacyleo 发表于 2014-7-24 12:58
先问一下,你说的数组定泛型是指:ArrayList[] as = new ArrayList[10]这种形式么? ...

ArrayList是集合,集合本身就能直接定义泛型的

这里问的是arr,形式不对的
作者: fantacyleo    时间: 2014-7-24 13:26
Jpor 发表于 2014-7-24 13:03
ArrayList是集合,集合本身就能直接定义泛型的

这里问的是arr,形式不对的 ...

额,那是指什么形式的?你写一个例子
作者: 0小菜鸟0    时间: 2014-7-24 13:30
数组里面定义泛型 ?你主要是做什么啊
作者: caiyaoren    时间: 2014-7-24 14:00
泛型是在集合上操作的吧
作者: 一十二。    时间: 2014-7-24 15:53
不用想肯定不行,数组怎么定义?   int[] x = new int[10]     你还想给什么类型?不是都定好了么?
作者: Jpor    时间: 2014-7-24 16:39
fantacyleo 发表于 2014-7-24 13:26
额,那是指什么形式的?你写一个例子

我想的是通过集合来操作好了

先把数组转成集合:

List<String> list = Arrays.asList(arr);//这里<String>就可以改成我们所需要的类型

然后在把集合转成数组,用toArray();


如果用反射的话,只能先获取数组自身的实际类型参数,看张老的视频里难度很高~
然后再用自定义泛型的方法转换俩个数组间的参数类型
具体见:
41_张孝祥Java高新技术_自定义泛型方法的练习与类型推断总结   //转换类型
43_张孝祥Java高新技术_通过反射获得泛型的实际类型参数         //获取泛型
作者: Jpor    时间: 2014-7-24 16:43
掌柜的--刘饮 发表于 2014-7-24 12:31
数组反射  张老师  高新技术里面有讲到java.lang.reflect.Array

恩,25_张孝祥Java高新技术_数组的反射应用,这里是指集合数组元素的反射取出,还没涉及泛型

还是谢谢了
作者: fantacyleo    时间: 2014-7-24 17:37
Jpor 发表于 2014-7-24 16:39
我想的是通过集合来操作好了

先把数组转成集合:

好吧,我知道你想干嘛了。就是Student[] 转成Person[]这种子父类数组转换对吧。除了基本类型,你的方法确实可行
作者: 0小菜鸟0    时间: 2014-7-30 13:04
这么多大牛,顶顶顶
作者: 南柯一梦    时间: 2014-7-30 14:22
泛型是为限定集合的类型,而数组都限定好了,只能说泛型和数组限定类型思想是一致的,所以数组上不可以定义泛型




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2