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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李菁 中级黑马   /  2012-9-13 21:14  /  2383 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {
        public static void main(String[] args)throws Exception {
              int[] num = {1,4,21,3,44};
              String[] arr = {"xzc","qwe","sada"};
              List<String> list1 = Arrays.asList(arr);//为什么用在String类型的数组长没有问题
              List<Integer> list2 = Arrays.asList(num);//为什么在这就会报错
              System.out.println(list1);
              System.out.println(list2);
        }
}

8 个回复

倒序浏览
本帖最后由 覃宏海 于 2012-9-13 21:27 编辑

import java.util.*;
public class Test {
    public static void main(String[] args)throws Exception {
          Integer[] num = {1,4,21,3,44};    //int是类型  Integer是类
          //int[] num = {1,4,21,3,44};
          String[] arr = {"xzc","qwe","sada"};
          List<String> list1 = Arrays.asList(arr);//为什么用在String类型的数组长没有问题
          List<Integer> list2 = Arrays.asList(num);//为什么在这就会报错
          System.out.println(list1);
          System.out.println(list2);
    }
}
回复 使用道具 举报
把int改成Integer就行了,int[]是整型数组,Integer[]才是整型集合。
回复 使用道具 举报
本帖最后由 杨震 于 2012-9-13 21:32 编辑

import java.util.*;
import java.util.Arrays;

public class Test2 {
         public static void main(String[] args)throws Exception {
               Integer[] num = {1,4,21,3,44};//这里改成Integer就行了
               String[] arr = {"xzc","qwe","sada"};
               List<String> list1 = Arrays.asList(arr);//为什么用在String类型的数组长没有问题
               List<Integer> list2 = Arrays.asList(num);//为什么在这就会报错
               System.out.println(list1);
               System.out.println(list2);
         }
}


Arrays.asList是个泛型方法
static <T> List<T> asList(T......args);
你看它的方法声明,参数应该是个T类型的数组,而且对于泛型,T必须是类类型,不能是基本类型
回复 使用道具 举报
明白了,问题已解决
回复 使用道具 举报
基本类型的一维数组可以被当作Object类型使用,不能当做Object[]类型使用,
非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用。
Object[] a = new String[]{};//编译通过。
回复 使用道具 举报
public class Test {
        public static void main(String[] args)throws Exception {
              int[] num = {1,4,21,3,44};
              String[] arr = {"xzc","qwe","sada"};
              List<String> list1 = Arrays.asList(arr);//为什么用在String类型的数组长没有问题
              List<Integer> list2 = Arrays.asList(num);//为什么在这就会报错 //你知道泛型的正确用法吗泛型里面要吗是对象 要吗是装饰类而不是基本类型 int是基本类型 他的装饰类是 Integer  ,String可以 因为他不是基本类型
              System.out.println(list1);
              System.out.println(list2);
        }
}
回复 使用道具 举报
这个应该给分!
回复 使用道具 举报
李菁 中级黑马 2012-9-13 22:32:33
9#
任艳旭 发表于 2012-9-13 22:26
这个应该给分!

我就喜欢你的回复 哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马