A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM张博文 高级黑马   /  2013-8-29 14:07  /  1052 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class FanDemo {

  2. /**
  3. * 接受一个任意类型的数组,倒序
  4. *
  5. * @param args
  6. */
  7. public static <T> void main(String[] args) {

  8. int[] arr = { 1, 2, 3, 4, 5 };
  9. mysort(arr);
  10. for (int i : arr) {
  11. System.out.println(i);
  12. }
  13. }

  14. private static <T> void mysort(T[] arr) {
  15. int start = 0;
  16. int end = arr.length - 1;
  17. while (true) {
  18. if (start >= end)
  19. break;
  20. T temp = arr[start];
  21. arr[start] = arr[end];
  22. arr[end] = temp;
  23. start++;
  24. end--;
  25. }
  26. }

  27. }
复制代码
我用泛型定义的一个给任意数组实现倒序功能的方法,结果整型数组传值进去的时候就提示出错了。第11行提示有错,类型不匹配,怪了?

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

5 个回复

倒序浏览
定义泛型只能用于引用数据类型,你用基本数据类型肯定不匹配啊,<T>,这个类型接收的是引用数据类型,而int是基本数据类型,当然类型不匹配了

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
貌似泛型只适用引用类型
你把int改为Integer就欧了

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
神之梦 发表于 2013-8-29 14:53
貌似泛型只适用引用类型
你把int改为Integer就欧了

改成Integer了是好了,可是,JDK5以后基本数据类型不是可以自动装箱成Integer的吗?
回复 使用道具 举报
HM张博文 发表于 2013-8-29 15:08
改成Integer了是好了,可是,JDK5以后基本数据类型不是可以自动装箱成Integer的吗? ...

{:soso_e136:}
自动装箱只是说你把int的值赋值给Integer类型的变量时,才起作用
你这里,泛型哪知道你的int数组是可以变为Integer引用类型数组的啊
回复 使用道具 举报
神之梦 发表于 2013-8-29 16:38
自动装箱只是说你把int的值赋值给Integer类型的变量时,才起作用
你这里,泛型哪知道你的i ...

看来JDK要升级了以后,能自动将int数组变为Integer引用类型数组才好哦,怎么不升级呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马