JAVA2中关于反射的应用主要是用来分析类结构,其中的Field,Method,Constructor类分别描述类的字段,方法和构造器。它们又分别读有相应的getName,getType,getModifiers等方法来返回其类信息。
类ObjectAnalyzerTest:
package cn.lesorb;
import java.text.NumberFormat;
import java.util.ArrayList;
public class ObjectAnalyzerTest {
public static void main(String[] args)
{
ObjectAnalyzer objAnalyzer = new ObjectAnalyzer();
Object obj = NumberFormat.getCurrencyInstance();
System.out.println(objAnalyzer.toString(obj));
ArrayList<Object> al = objAnalyzer.visited;
for(int i=0;i<al.size();i++) {
System.out.println(al.get(i));
}
}
}
类ObjectAnalyzer:
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
class ObjectAnalyzer{
@SuppressWarnings("unchecked")
public String toString(Object obj){
/*
*
* Converts an object to a string representation that lists all fields
*
*/
if(obj==null) return "null";
if(visited.contains(obj)) return "...";
visited.add(obj);
Class c1=obj.getClass();
if(c1==String.class){
return (String)obj;
}
if(c1.isArray()){
String r=c1.getComponentType()+"[]{";
for(int i=0;i<Array.getLength(obj);i++){
if(i>0){
r+=",";
}
Object val=Array.get(obj,i);
if(c1.getComponentType().isPrimitive()){
r+=val;
} else{
r+=toString(val);
}
}
return r+"}";
}
String r=c1.getName();
do{
r+="[";
Field[] fields=c1.getDeclaredFields();
AccessibleObject.setAccessible(fields,true);
for(Field f:fields){
if(!Modifier.isStatic(f.getModifiers())){
if(!r.endsWith("[")){
r+=",";
}
r+=f.getName()+"=";
try {
Class t=f.getType();
Object val=f.get(obj);
if(t.isPrimitive()){
r+=val;
} else {
r+=toString(val);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
r+="]";
c1=c1.getSuperclass();
}
while(c1!=null);
return r;
}
ArrayList<Object> visited=new ArrayList<Object>();
}
打印输出:
java.text.DecimalFormat@774c1
0
[C@156ee8e
HALF_EVEN
HALF_EVEN
¥
-¥
'¤
'-'¤
java.text.DecimalFormatSymbols@1073a
∞
?
CNY
E
zh_CN
zh
CN
CNY
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
java反射,获取所有属性、方法以及List集合类
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
本文档时关于Java的反射的一个组件Constructor的描述和讲解
java反射java反射java反射java反射java反射
Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
JAVA REFLECT (java 反射) 取得类的继承结构 - 类所在的包; |- public Package getPackage() - 类的声明方式; |-取得全类名:public String getName() |-只取类名: public String getSimpleName() - 类所继承...
java 反射中操作数组 java 反射中操作数组 java 反射中操作数组
java 反射demo
java之反射优化(缓存思路)源码 编程中,抽象是一个重要思想。一个无状态(业务less)的抽象化工具方法,往往可以起到减少代码量的作用,使得程序员能更加focus更加重要的业务逻辑中去
(通过反射获取无参构造方法并使用) (通过反射获取带参构造方法并使用) (通过反射获取私有构造方法并使用) (通过反射获取成员变量并使用) (通过反射获取无参无返回值成员方法并使用) (通过反射获取带参带返回值成员...
中科院培训的java反射的PPT 和 java 反射的示例代码 供大家分享 , 谢谢 !