`
wnzz95391511
  • 浏览: 126794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Java反射机制得到类的结构信息

阅读更多
使用Java反射机制得到类的结构信息
代码如下:
package com.youdao.wm;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * java反射机制测试:打印类的构造函数、方法、属性的信息
 * 
 * @author jacky
 * 
 */
public class ReflectionTest {

	public static void main(String[] args) {
		// 要打印的类名
		String name = "java.lang.Double";
		try {
			// 得到此类对应的Class
			Class c1 = Class.forName(name);
			// 得到此类的父类
			Class superc1 = c1.getSuperclass();
			System.out.print("class " + name);
			// 如果超类不为空且不是Object
			if (superc1 != null && superc1 != Object.class) {
				System.out.print("extends " + superc1.getName());
			}

			System.out.print("\n{\n");

			// 打印此类的构造函数信息
			printConstructors(c1);
			System.out.println();

			// 打印此类的方法信息
			printMethods(c1);
			System.out.println();

			// 打印此类的属性信息
			printFields(c1);

			System.out.print("\n}\n");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 打印Class对应类的构造函数信息
	 * 
	 * @param c1
	 *            Class
	 */
	public static void printConstructors(Class c1) {
		Constructor[] constructors = c1.getDeclaredConstructors();

		for (Constructor c : constructors) {
			String name = c.getName();
			System.out.print("   " + Modifier.toString(c.getModifiers()));
			System.out.print(" " + name + "(");

			Class[] paramTypes = c.getParameterTypes();

			for (int j = 0; j < paramTypes.length; j++) {
				if (j > 0)
					System.out.print(",");
				System.out.print(paramTypes[j].getName());
			}

			System.out.println(");");
		}
	}

	/**
	 * 打印Class对应类的所有方法信息
	 * 
	 * @param c1
	 *            Class
	 */
	public static void printMethods(Class c1) {
		Method[] methods = c1.getDeclaredMethods();

		for (Method method : methods) {
			Class retType = method.getReturnType();

			String name = method.getName();

			System.out.print("   " + Modifier.toString(method.getModifiers()));
			System.out.print(" " + retType.getName() + " " + name + "(");

			Class[] paramTypes = method.getParameterTypes();

			for (int j = 0; j < paramTypes.length; j++) {
				if (j > 0)
					System.out.print(", ");
				System.out.print(paramTypes[j].getName());
			}

			System.out.println(");");
		}

	}

	/**
	 * 打印Class对应类的属性信息
	 * 
	 * @param c1
	 *            Class
	 */
	public static void printFields(Class c1) {
		Field[] fields = c1.getDeclaredFields();

		for (Field f : fields) {
			Class classType = f.getType();

			System.out.print("   " + Modifier.toString(f.getModifiers()));
			System.out.print(" " + classType.getName() + " " + f.getName());
			System.out.println(";\n");
		}
	}

}

分享到:
评论

相关推荐

    java面试题--反射机制

    Java反射机制允许程序在运行时获取类的信息,这使得Java具有了一定程度上的动态性。具体来说,Java反射机制提供了以下功能: 1. **获取类的信息**:可以在运行时获取类的修饰符、父类、实现接口等信息。 2. **操作...

    Java反射机制总结

    ### Java反射机制总结 ...总之,Java反射机制是Java语言的一个重要特性,它提供了在运行时动态获取类信息和操作类结构的能力。合理使用反射可以提高程序的灵活性和扩展性,但在使用时也需要考虑到其潜在的问题和限制。

    候捷谈Java反射机制

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时获取和操作任何已知名称的类的内部信息。这一机制使得Java具备了一定的动态性,虽然在传统的分类中Java被视为静态类型语言。通过反射,开发者可以在...

    java 反射机制例子

    Java反射机制是Java语言的一项重要特性,它使得程序能够在运行时获取和操作类的内部信息。虽然反射提供了强大的功能,但在使用时应谨慎,以免引入不必要的性能损耗或安全风险。对于初学者而言,了解并掌握Java反射...

    java反射机制应用

    Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建对象,调用方法等。这为Java程序带来了极大的灵活性和扩展性...

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    Java反射机制笔记(简单易懂)

    通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态地调用这些成员变量和方法。 获取Class对象 ---------------- 在Java中,Class对象是反射机制的基础。我们可以...

    Java反射机制课件ppt

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这种机制使得Java具有高度的灵活性和动态性,可以在编译时未知类的情况下进行类的加载、实例化、方法调用等操作...

    Java 反射机制 代码的实例

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...

    Java反射机制

    Java反射机制是一项强大的技术,它允许开发者在运行时动态地处理类和对象。然而,反射操作可能会带来性能上的开销,并且如果使用不当还可能导致安全问题。因此,在使用反射时应该谨慎考虑其适用性和潜在的风险。

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    java的反射机制及其实际应用

    ### Java的反射机制及其实际应用 #### 一、引言 ...总之,Java反射机制是一项强大的工具,它能够在运行时动态地获取和操作类的信息。然而,应该谨慎使用反射,避免滥用造成不必要的性能损失或安全风险。

    使用java反射机制实现java的深拷贝

    总结来说,Java反射机制为我们提供了动态访问和操作类的能力,可以用来实现对象的深拷贝。然而,反射使用时应谨慎,因为它可能导致性能下降,且容易引入安全隐患。在设计类时,优先考虑使用序列化、克隆或自定义拷贝...

    Java反射机制的使用和学习方法

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。这一机制对于理解和实现高级框架、动态代理、元数据处理等场景至关重要。以下是对Java反射机制的详细说明:...

    java反射机制

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者能够在运行时动态地获取类的信息(如类名、方法名、参数类型)并调用方法,创建对象,甚至...

    Java反射机制学习总结

    Java反射机制是Java编程语言中一个强大的工具,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于java.lang.reflect包中的API,主要包括Class类、Constructor类、Method类和Field类。以下是...

    java 反射机制

    Java反射机制是一种强大的工具,它允许程序在运行时检查和操作任何类、方法、构造函数和字段等元素。这种能力对于构建灵活的应用程序和框架非常有用,特别是那些需要在运行时动态地加载组件或根据不同的配置行为变化...

    java反射机制.pdf

    Java反射机制允许程序在运行时通过`Reflection APIs`获取类的内部信息,包括修饰符(如`public`、`static`等)、父类(如`Object`)、接口(如`Cloneable`)以及字段和方法的信息,并能够在运行时改变字段的值或调用...

    JAVA反射机制与类的加载

    Java反射机制是Java语言的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制主要涉及类加载器(ClassLoader)和`Class`类。在Java程序运行过程中,类加载器负责将类加载到JVM的内存中,...

Global site tag (gtag.js) - Google Analytics