zoukankan      html  css  js  c++  java
  • 关于Java中强制类型转换的问题

     为了更好的理解我们先看下面的例子:

    package com.yonyou.test;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    
    /**
     * 测试类
     * @author 小浩
     * @创建日期 2015-3-2
     */
    
    public class Test{
    public static void main(String[] args) {
    	 List<String> list=new ArrayList<String>();
    	 list.add("Hello");
    	 list.add("World");
    	 list.add("HAHAHAHA");
    	 
    
    	String[] strArray2=new String[list.size()];
    	list.toArray(strArray2);
    	for(int i=0;i<strArray2.length;i++) 
    	{
    		System.out.println(strArray2[i]);
    	}
    	
    	//下面的内容将会出现强制转换的错误
    	String[] strArray=(String[]) list.toArray();   //list.toArray()会返回Object[]类型的数组,想强制转换为String[]
    	for(int i=0;i<strArray.length;i++) 
    	{
    		System.out.println(strArray[i]);
    	}
    
      }
    }
    

      

    对于上面的出现的问题,主要原因在于数组类型的上下级没有弄明白。

    一般对于强制类型转换而言,子类可以强制转换为对应的父类,但父类是不能够强制转换为对应的子类的哦。

    上面的String是Object类的子类,代码中企图通过将相应的父类(Object[])转换为对应的子类(String[]),在编译的时候不会报错,

    但在运行的时候就会抛出运行时异常:强制类型转换错误。

    此外,补充一个知识点,子类转换为对应的父类的过程我们称之为对象的上转型。

  • 相关阅读:
    MVC概念性的内容
    类 class
    php获取真实IP地址
    面向对象static静态的属性和方法的调用
    smarty 入门2(个人总结)
    smarty入门
    读取文件内容fopen,fgets,fclose
    mysql常用命令
    mybatis查询的三种方式
    MyBatis 映射文件
  • 原文地址:https://www.cnblogs.com/xiohao/p/4313272.html
Copyright © 2011-2022 走看看