平时做JAVA总是会遇到强制转换的时候,一般单个对象强制转换很方便,
例如Bb=null;A a=(A)b;
但是, B[] b=null; A[] a=(A[])b却会导致异常发生,为了解决这个问题,我们不得不对数组中每个元素单独进行强制转换,
for(int i=0;i<b.length;i++)
a[i]=(A)b[i];
如果只有这么两种类型进行转换也好,要是还有C类型到D类型等等很多其他类型怎么办? 鉴于这个原因,我写了一个通用的强制对数组进行转换的函数,对于上面这个转换只需要调用 A[] a=(A[])TestCast.cast(b,A.class) 就可以解决问题,很是方便;具体代码如下:
/***//**
*@authorAdministrator
*
*/
publicclassTestCast...{
publicstaticvoidmain(String[]args)...{
/***//**
*
*一般情况下数组和数组是不能直接进行转换的,例如:
*Object[]t1={"1","2"};
*String[]t2=(String[])t1;//这里会出现转换错误
*
*下面提供了一种方式进行转换
*/
//1.0测试一般基础类
Object[]t1=...{"1","2","3","4","5"};
String[]m1=(String[])TestCast.cast(t1,String.class);
for(inti=0;i<m1.length;i++)
System.out.println(m1[i]);
//2.0测试复杂对象
Object[]t2=...{newDate(1000),newDate(2000)};
Date[]m2=(Date[])TestCast.cast(t2,Date.class);
for(inti=0;i<m2.length;i++)
System.out.println(m2[i].toString());
}
/***//**
*将数组array转换成clss代表的类型后返回
*@paramarray需要转换的数组
*@paramclss要转换成的类型
*@return转换后的数组
*/
publicstaticObjectcast(Objectarray,Classclss)...{
if(null==clss)
thrownewIllegalArgumentException("argumentclsscannotbenull");
if(null==array)
thrownewIllegalArgumentException("argumentarraycannotbenull");
if(false==array.getClass().isArray())
thrownewIllegalArgumentException("argumentarraymustbearray");
Object[]src=(Object[])array;
Object[]dest=(Object[])Array.newInstance(clss,src.length);
System.arraycopy(src,0,dest,0,src.length);
returndest;
}
}
分享到:
相关推荐
∷相关函数:Parent函数 LeftChild函数 RightChild函数 LeftSibling函数 RightSibling函数 1.4.7 双亲、孩子和兄弟节点的查询(链式结构) 162 范例1-61 双亲、孩子和兄弟节点的查询 162 ∷相关函数:Parent函数 ...
第23章 名字空间、转换函数和其他高级主题 23.1 名字空间 23.2 std名字空间 23.3 创建转换函数 23.4 const成员函数与mutable 23.5 volatile成员函数 23.6 explicit构造函数 23.7 成员初始化语法 23.8 利用关键字asm ...
∷相关函数:Parent函数 LeftChild函数 RightChild函数 LeftSibling函数 RightSibling函数 1.4.7 双亲、孩子和兄弟节点的查询(链式结构) 162 范例1-61 双亲、孩子和兄弟节点的查询 162 ∷相关函数:Parent函数 ...
《明解C语言 第3版 入门篇》图文并茂,示例丰富,第3版从190段代码和164幅图表增加到205段代码和220幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于C语言语法以及一些难以...
C 语言通用范例开发金典 第1章 数据结构. 1 1.1 数组和字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维...
通过结构指针即可访问该结构变量, 这与数组指针和函数指针的情况是相同的。结构指针变量说明的一般形式为: struct 结构名*结构指针变量名 例如,在前面的例7.1中定义了stu这个结构, 如要说明一个指向stu的指针...
2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...
2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...
2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...
2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...
2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...
2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...
2.6 类型转换和类型强制转换 64 2.6.1 赋值语句中的类型转换 65 2.6.2 显式类型转换 65 2.6.3 老式的类型强制转换 66 2.7 auto关键字 66 2.8 查看类型 67 2.9 按位运算符 67 2.9.1 按位and运算符 68 2.9.2 按位or...
一共分为四部分 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 3,函数 4,程序流程控制 5,C++数据类型结构 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计
一共同分为四部分, C++ 大学自学教程(第7版) 目录 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计
一共同分为四部分, C++ 大学自学教程(第7版) 目录 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计
一共同分为四部分, C++ 大学自学教程(第7版) 目录 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计
可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小...