利用反射分析类,查看类内部
来源:互联网 发布:archlinux如何配置网络 编辑:程序博客网 时间:2024/05/17 04:36
查看一个已经编译的类中的域和方法名称的方式:
1.使用javap -private 类名(cd进入当前类所在的目录)
2.corejava中利用反射机制自己实现的类,java ReflectionTest,运行起来后,再输入类名。
下面是corejava中的工具类:
import java.util.*;import java.lang.reflect.*;/** * This program uses reflection to print all features of a class. * @version 1.1 2004-02-21 * @author Cay Horstmann */public class ReflectionTest{ public static void main(String[] args) { // read class name from command line args or user input String name; if (args.length > 0) name = args[0]; else { Scanner in = new Scanner(System.in); System.out.println("Enter class name (e.g. java.util.Date): "); name = in.next(); } try { // print class name and superclass name (if != Object) Class cl = Class.forName(name); Class supercl = cl.getSuperclass(); String modifiers = Modifier.toString(cl.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.print("class " + name); if (supercl != null && supercl != Object.class) System.out.print(" extends " + supercl.getName()); System.out.print("\n{\n"); printConstructors(cl); System.out.println(); printMethods(cl); System.out.println(); printFields(cl); System.out.println("}"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.exit(0); } /** * Prints all constructors of a class * @param cl a class */ public static void printConstructors(Class cl) { Constructor[] constructors = cl.getDeclaredConstructors(); for (Constructor c : constructors) { String name = c.getName(); System.out.print(" "); String modifiers = Modifier.toString(c.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.print(name + "("); // print parameter types 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(");"); } } /** * Prints all methods of a class * @param cl a class */ public static void printMethods(Class cl) { Method[] methods = cl.getDeclaredMethods(); for (Method m : methods) { Class retType = m.getReturnType(); String name = m.getName(); System.out.print(" "); // print modifiers, return type and method name String modifiers = Modifier.toString(m.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.print(retType.getName() + " " + name + "("); // print parameter types Class[] paramTypes = m.getParameterTypes(); for (int j = 0; j < paramTypes.length; j++) { if (j > 0) System.out.print(", "); System.out.print(paramTypes[j].getName()); } System.out.println(");"); } } /** * Prints all fields of a class * @param cl a class */ public static void printFields(Class cl) { Field[] fields = cl.getDeclaredFields(); for (Field f : fields) { Class type = f.getType(); String name = f.getName(); System.out.print(" "); String modifiers = Modifier.toString(f.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.println(type.getName() + " " + name + ";"); } }}
- 利用反射分析类,查看类内部
- 利用反射分析类的内部数据
- 利用反射分析类
- 利用反射,分析类
- 利用反射查看类的结构
- 利用Java反射机制输出一个类的内部构造
- 利用反射分析类的能力,使用反射分析对象
- core java 例题 利用反射分析类
- 利用java反射分析类的能力
- 利用反射机制分析类 | Java基础
- Java反射(二)利用反射分析类的能力
- Java利用反射查看类属性和方法例子
- 利用反射机制查看ArrayList类的信息
- C# 利用反射查看程序集下的类
- java 利用反射获取类,实例化,并执行其内部方法
- Java利用反射机制分析类的能力
- 反射+Class类方法_利用反射分析类的能力
- Java中的反射(2)——利用反射分析类的基本能力
- 要走向程序员之路了
- busybox 致命错误: curses.h:没有那个文件或目录
- 2010-02-28 传智播客—Android(三)数据存储之三SQLite嵌入式数据库
- ffmpeg在Windows平台上的编译方法
- Flex的Array和ArrayCollection
- 利用反射分析类,查看类内部
- 由-128的补码引出的深层次思考。
- ubuntu11安装qt-x11-opensource-src-4.5.3.tar.gz错误解决办法01
- 有理想的程序员必须知道的15件事
- FlexFormatter插件,将代码设置为java格式显示方法
- Android SQLite学习
- HTTP 代理如何正确处理 Cookie
- android sqlite 一次创建多个表
- java实现自动切换输入法