您的位置:首页 > 编程语言 > Java开发

java_reflect_04

2016-07-13 22:53 453 查看

反射操作数组:

通过public Class<?> getComponentType()来取得一个数组的Class对象

例:

import java.lang.reflect.Array ;
public class ClassArrayDemo{
public static void main(String args[]) throws Exception{
int temp[] = {1,2,3} ;// 声明一整型数组
Class<?> c = temp.getClass().getComponentType() ;    // 取得数组的Class对象
System.out.println("类型:" + c.getName()) ;    // 取得数组类型名称
System.out.println("长度:" + Array.getLength(temp)) ;
System.out.println("第一个内容:" + Array.get(temp,0)) ;
Array.set(temp,0,6) ;
System.out.println("第一个内容:" + Array.get(temp,0)) ;

}
};

这里要注意一下这里的Array这个类java.lang.reflect.Array

以上程序中通过Array类取得了数组的相关信息,并通过Array类中的set()方法修改了数组中的元素内容.

在应用中还可以通过Array类根据已有的数组类型来开辟新的数组对象

例:

import java.lang.reflect.Array ;
public class ChangeArrayDemo{
public static void main(String args[]) throws Exception{
int temp[] = {1,2,3} ;// 声明一整型数组
int newTemp[] = (int []) arrayInc(temp,5) ;    // 重新开辟空间5
print(newTemp) ;
System.out.println("\n-------------------------") ;
String t[] = {"lxh","mldn","mldnjava"} ;
String nt[] = (String [])arrayInc(t,8) ;
print(nt) ;
}
public static Object arrayInc(Object obj,int len){
Class<?> c = obj.getClass() ;
Class<?> arr = c.getComponentType() ;    // 得到数组的
Object newO = Array.newInstance(arr,len) ;    // 开辟新的大小
int co = Array.getLength(obj) ;
System.arraycopy(obj,0,newO,0,co) ;    // 拷贝内容
return newO ;
}
public static void print(Object obj){    // 数组输出
Class<?> c = obj.getClass() ;
if(!c.isArray()){    // 判断是否是数组
return;
}
Class<?> arr = c.getComponentType() ;
System.out.println(arr.getName()+"数组的长度是:" + Array.getLength(obj)) ;     // 输出数组信息
for(int i=0;i<Array.getLength(obj);i++){
System.out.print(Array.get(obj,i) + "、") ;    // 通过Array输出
}
}
};

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: