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