反射操作数组:

通过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输出
}
}
};

最新文章

  1. mysql解决Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
  2. 【Android】神奇的android:clipChildren属性
  3. UOJ20 解方程
  4. 第一个C语言编译器是怎样编写的?
  5. 《C标准库》——之&lt;stdarg.h&gt;
  6. 修改 AndroidManifest minSdkVersion 的方法
  7. html笔记 仅适用于个人
  8. PCB板可靠性测试方法择要
  9. 混血儿爹妈要混的远,数据库与WEB分离,得混的近
  10. Backbone的RESTFUL API 解释
  11. hdu 5591 ZYB&#39;s Game
  12. ios之极光推送消息收到以后对消息的处理总结
  13. spring+mybatis之声明式事务管理初识(小实例)
  14. 基于angular的route实现单页面cnodejs
  15. 微信小程序+和风天气完成天气预报
  16. 【Linux】-- Linux上java运行环境的配置(JDK+TOMCAT)
  17. shell 生成MAC地址
  18. Html5与Css3知识点拾遗(五)
  19. golang 面向对象编程
  20. OSI七层协议与TCP/IP模型

热门文章

  1. web.py simpletodo 例子
  2. YII 主题
  3. HDU 4717The Moving Points warmup2 1002题(三分)
  4. 【转】Android驱动开发之earlysuspend睡眠模式编程总结
  5. Delphi 为TClientdataset定义结果集,并增加记录
  6. UNITY3D ShadeSH9
  7. HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
  8. 数据结构——N皇后放置方法种数
  9. buptoj 1578
  10. 剪花布条 - HDU 2087(简单KMP | 暴力)