小编Ama*_*n J的帖子

原始类型抛出不一致的ClassCastException

执行下面的代码时,代码执行完美而没有任何错误,但对于类型的变量,方法List<Integer>的返回类型get()应该是Integer,但是在执行此代码时,当我调用x.get(0)一个字符串时返回,而这应该抛出一个例外.

public static void main(String[] args)
      {
            ArrayList xa = new ArrayList();
            xa.addAll(Arrays.asList("ASDASD", "B"));
            List<Integer> x = xa;
            System.out.println(x.get(0));
      }
Run Code Online (Sandbox Code Playgroud)

但是在执行下面的代码时,只需将返回对象的类检索添加到前一个代码块就会引发类强制转换异常.如果上面的代码完美执行,则以下内容也应该执行而没有任何异常:

public static void main(String[] args)
      {
            ArrayList xa = new ArrayList();
            xa.addAll(Arrays.asList("ASDASD", "B"));
            List<Integer> x = xa;
            System.out.println(x.get(0).getClass());
      }
Run Code Online (Sandbox Code Playgroud)

为什么java在获取对象的类类型时执行类型转换?

java raw-types classcastexception java-8 unchecked-cast

4
推荐指数
1
解决办法
184
查看次数