`
javahigh1
  • 浏览: 1223210 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

通用的 数组到数组强制转换 的工具函数

 
阅读更多

平时做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;
}

}
分享到:
评论

相关推荐

    C语言通用范例开发金典.part1.rar

    ∷相关函数:Parent函数 LeftChild函数 RightChild函数 LeftSibling函数 RightSibling函数 1.4.7 双亲、孩子和兄弟节点的查询(链式结构) 162 范例1-61 双亲、孩子和兄弟节点的查询 162 ∷相关函数:Parent函数 ...

    -C++参考大全(第四版) (2010 年度畅销榜

    第23章 名字空间、转换函数和其他高级主题 23.1 名字空间 23.2 std名字空间 23.3 创建转换函数 23.4 const成员函数与mutable 23.5 volatile成员函数 23.6 explicit构造函数 23.7 成员初始化语法 23.8 利用关键字asm ...

    C语言通用范例开发金典.part2.rar

    ∷相关函数:Parent函数 LeftChild函数 RightChild函数 LeftSibling函数 RightSibling函数 1.4.7 双亲、孩子和兄弟节点的查询(链式结构) 162 范例1-61 双亲、孩子和兄弟节点的查询 162 ∷相关函数:Parent函数 ...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    《明解C语言 第3版 入门篇》图文并茂,示例丰富,第3版从190段代码和164幅图表增加到205段代码和220幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于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 一维...

    C语言程序设计标准教程

    通过结构指针即可访问该结构变量, 这与数组指针和函数指针的情况是相同的。结构指针变量说明的一般形式为: struct 结构名*结构指针变量名 例如,在前面的例7.1中定义了stu这个结构, 如要说明一个指向stu的指针...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...

    Visual C++ 2005入门经典.part07.rar (整理并添加所有书签)

    2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...

    Visual C++ 2005入门经典.part09.rar (整理并添加所有书签)

    2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...

    Visual C++ 2005入门经典.part06.rar (整理并添加所有书签)

    2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...

    Visual C++ 2005入门经典.part05.rar (整理并添加所有书签)

    2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 ...

    [Visual.C++.2010入门经典(第5版)].Ivor.Horton.part1

    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++ 大学自学教程 C++ 大学教程 第7版 2

    一共分为四部分 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 3,函数 4,程序流程控制 5,C++数据类型结构 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计

    c++大学自学教程 c++大学教程 第七版1

    一共同分为四部分, C++ 大学自学教程(第7版) 目录 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计

    c++大学自学教程 c++大学教程 第七版 3

    一共同分为四部分, C++ 大学自学教程(第7版) 目录 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计

    c++大学自学教程 c++大学教程 第七版 4

    一共同分为四部分, C++ 大学自学教程(第7版) 目录 第一部分 C++语言 1,C++程序设计概述 2,编写简单的C++程序 ...37,C++类型强制转换 38,运行时类型信息 39,区域表示 40,面向对象程序设计

    你必须知道的495个C语言问题.pdf

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小...

Global site tag (gtag.js) - Google Analytics