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反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
### Java反射性能测试分析 #### 引言 Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的...
### Java反射机制总结 #### 反射的概念与起源 反射的概念最早由Smith于1982年提出,指的是程序能够访问、检测并修改其自身状态或行为的能力。这一概念的提出迅速引起了计算机科学领域的广泛关注,并在之后的研究中...
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等信息,即使这些信息在编译时并未明确知晓。在Java中,反射通常通过`java.lang.Class`类和相关的API来实现。本实例将...
"Java反射 JavaBean 对象自动生成插入、更新、删除、查询sql语句操作" Java反射JavaBean对象自动生成插入、更新、删除、查询sql语句操作是指通过Java反射机制,依据提供的表名、POJO类型、数据对象自动生成sql语句...
### Java反射机制详解 #### 一、什么是Java反射? Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用...
总之,Java反射机制是Java程序员必备的技能之一,它提供了对程序运行时类型信息的访问和操作,极大地扩展了Java代码的灵活性和可扩展性。通过深入学习和实践,我们可以更好地理解和利用这一强大的工具。
Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。这个能力使得开发者可以突破静态类型的束缚,实现一些在编译时期无法完成...
### Java反射机制详解 #### 一、什么是Java反射机制? Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制主要用到了java.lang.Class、java.lang.reflect.Method、java.lang.reflect....
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中在java.lang.reflect包下,包括Class、Constructor、Method和Field...
Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行上发挥着关键作用。本文将深入探讨这两个概念,以及如何在实际开发中利用它们。 首先,我们来理解Java反射(Reflection)。Java反射...
Java反射机制是Java编程语言中一个强大的特性,它允许运行时的程序动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包下的类如`Constructor`、`Method`和`...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、字段和方法等对象。在“java 反射ppt 和 code 示例”中,我们可以深入理解这个强大的工具及其在实际开发中的应用。 首先,PPT部分...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息,甚至动态地创建对象并调用其方法。通过反射,开发者可以实现高度灵活和动态的代码,这对于框架开发、元编程...
(通过反射获取无参构造方法并使用) (通过反射获取带参构造方法并使用) (通过反射获取私有构造方法并使用) (通过反射获取成员变量并使用) (通过反射获取无参无返回值成员方法并使用) (通过反射获取带参带返回值成员...
- **Class**: 每个类都有一个与之对应的`Class`对象,它是反射的基础。 - **Constructor**: 用于创建类的新实例。 - **Field**: 表示类的成员变量。 - **Method**: 表示类的方法。 #### 三、反射操作父类的属性 ...
Java反射和工厂模式是两种非常重要的编程概念,它们在软件设计和实现中起着关键作用。反射机制允许我们在运行时动态地获取类的信息并操作对象,而工厂模式是一种设计模式,它提供了一种创建对象的最佳方式,使得代码...