package com.xxt.utils;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import net.xxt.entity.UserInfo;
/**
* @description Printf 打印对象
* @author Chjz
* @date 2009-11-25 上午11:25:35
*/
public class Printf {
/**
* 打印一个对象,测试时用,功能类似于 toString(),无侵入性
*/
public static void print(Object o){
System.out.println("----" + o.getClass().getName() + "----");
try {
BeanInfo beanInfo = Introspector.getBeanInfo(o.getClass());
PropertyDescriptor[] propertys = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertys) {
System.out.printf("%30s\t%20s\t",property.getPropertyType(), property.getName());
if(property.getPropertyType().isArray()){ //getPropertyType得到属性类型。
//getReadMethod()得到此属性的get方法----Method对象,然后用invoke调用这个方法
String[] result=(String[]) property.getReadMethod().invoke(o, new Object[]{});
for (int j = 0; j < result.length; j++) {
System.out.print(result[j] + ",");
}
System.out.println();
} else {
System.out.println(property.getReadMethod().invoke(o, new Object[]{}));
}
}
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
UserInfo u = new UserInfo();
u.setAccountId("test");
print(u);
}
}
分享到:
相关推荐
4.9反射内省.txt.xmind
反射机制的分类包括反射 API、反射与数组、反射与泛型、反射源码与性能开销、反射优缺点、反射与内省等。 反射 API 是 Java 语言提供的一组 Application Programming Interface(API),用于在运行时获取类的信息和...
本篇文章将深入探讨如何利用反射和内省技术来实现一个简单的Spring IOC。首先,我们来理解什么是反射和内省。 反射是Java提供的一种强大的动态类型机制,它允许程序在运行时检查类的信息,如类名、属性、方法等,并...
在这个"酷炫javaweb后台系统"中,包含了一些核心的JavaWeb技术和编程理念,如封装、反射和内省等。这些概念是Java编程的重要组成部分,对于理解和构建高效的应用程序至关重要。 首先,让我们来探讨一下"封装"。封装...
Java反射与内省是Java编程语言中的核心特性,它们为开发者提供了强大的能力,可以在运行时检查和操作类、接口、对象及其属性。本PPT深入探讨了这些概念,旨在帮助开发者充分利用Java平台的灵活性。 首先,Java反射...
这段代码通过反射调用了字符串对象的 `length` 方法,并打印出长度。这种方法特别适用于那些需要动态调用未知方法的场景。 ##### 2.3 应用场景 反射最典型的应用场景之一是在需要动态扩展功能的程序中。比如,假设...
"JAVA的内省机制(introspector)与反射机制(reflection)" JAVA 的内省机制(introspector)和反射机制(reflection)是两个重要的概念,在 JAVA 编程中扮演着至关重要的角色。那么,什么是内省机制和反射机制?它们...
Java中的反射机制是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。在Java 1.5引入的反射API使得开发者可以在编译期未知的情况下,动态地获取类的信息并执行相关操作。以下将详细介绍...
结构反射侧重于元类与类之间的关系,计算反射则关注于计算层面上的应用领域相关目标计算和系统自身的反射计算。在编程语言中,反射通常指的是程序在执行过程中对表示程序状态数据的操纵能力,具体体现在内省和调解两...
每个加载的类都会自动产生一个对应的`Class`对象。然而,`Class`类本身并没有公共构造器,因此不能直接实例化。要获取`Class`对象,通常可以通过对象的`getClass()`方法或使用`Class.forName()`静态方法。 一旦有了...
掌握Java反射机制对于开发者来说是非常有价值的,尤其是在开发框架、自动化测试等方面的应用。 #### 十、参考资料 - [Oracle官方文档](https://docs.oracle.com/javase/tutorial/reflect/) - [Effective Java]...
Java IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented ...在源码和工具方面,我们可以学习到如何利用Java的内省API进行类信息的获取,以及如何利用反射和动态代理来实现依赖注入和面向切面编程。
特别详细的java内省思维导图,全方面介绍java内省的功能以及用法用处。
通过Java反射机制,可以在运行时获取类的信息并操作类的对象,这为Java应用开发带来了极大的灵活性。 #### 二、Java反射机制概述 Java反射机制允许程序在运行时通过`Reflection APIs`获取类的内部信息,包括修饰符...
内省(Introspection)是Java编程语言中的一个重要特性,它允许程序在运行时检查对象的属性和方法,以及类的信息。在Java中,内省主要用于动态操作对象,特别是那些在设计时没有完全预知其行为的对象。内省机制使得...
4. **内省支持**:JavaBean必须支持内省(Introspection),这意味着它可以自描述其属性和行为,方便框架和工具进行自动化处理。 5. **可视化工具兼容性**:为了在可视化应用程序生成工具中应用,JavaBean必须符合...
内省是指程序自我检查和理解的能力,而反射则是这一能力的具体实现,它使Java程序能够在运行时加载、检查和操作未知的类。 Java的反射API包括`java.lang.Class`以及`java.lang.reflect`包中的`Method`、`Field`和`...
在Java编程语言中,反射和内省是两个强大的特性,它们允许程序在运行时检查类、接口、字段和方法的信息,甚至动态地调用方法和访问属性。"minimalcode-reflect"项目提供了一个简约的框架,专注于JavaBean的反射和...