java反思reflect 分析Object物
直接看它的一个例子
</pre><pre name="code" class="java">package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; class Behavior { private long distance; private long amount; public long getDistance() { return distance; } public void setDistance(long distance) { this.distance = distance; } public long getAmount() { return amount; } public void setAmount(long amount) { this.amount = amount; } public String walk() { return "走了" + distance + "公里"; } public String eat() { return "吃了" + amount + "碗饭"; } } class Person extends Behavior { private String username; private int age; static char sex; protected final double high = 0; public String[] hobby; public Behavior be; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public static void setSex(char sex) { Person.sex = sex; } public double getHigh() { return high; } public String[] getHobby() { return hobby; } public void setHobby(String[] hobby) { this.hobby = hobby; } public Behavior getBe() { return be; } public void setBe(Behavior be) { this.be = be; } public Person() { } public Person(String username, int age, String[] hobby, Behavior be) { super(); this.username = username; this.age = age; this.hobby = hobby; this.be = be; } public String fun2(int a, int b, int c, String d, double e, float f, char g) { return a + b + c + d + e + f + g; } } public class ObjectAnalyzer { public void printFields(Field[] fields) { for (int i = 0; i < fields.length; i++) { Field f = fields[i]; int m = f.getModifiers(); String name = f.getName(); Class<?> clazz = f.getType(); System.out.println(Modifier.toString(m) + " " + clazz.getName() + " " + name); } } public void printConstructor(Constructor<?>[] c) { for (int i = 0; i < c.length; i++) { Constructor<?
> con = c[i]; String name = con.getName(); int m = con.getModifiers(); Class<?>[] clazz = con.getParameterTypes(); System.out.print(Modifier.toString(m) + " " + name + "("); for (int j = 0; j < clazz.length; j++) { System.out.print(clazz[j].getName() + " "); } System.out.println(")"); } } public void printMethod(Method[] methods) { for (int i = 0; i < methods.length; i++) { Method m = methods[i]; int modi = m.getModifiers(); String name = m.getName(); Class<?> returnType = m.getReturnType(); Class<?>[] paramType = m.getParameterTypes(); System.out.print(Modifier.toString(modi) + " " + returnType.getName() + " " + name + "("); for (int j = 0; j < paramType.length; j++) { System.out.print(paramType[j].getName() + " "); } System.out.println(")"); } } public void analyzer(Object obj) { Class<?> clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); Constructor<?>[] c = clazz.getDeclaredConstructors(); Method[] method = clazz.getDeclaredMethods(); //Method[] method = clazz.getMethods(); System.out.println("=====属性变量的分析====="); System.out.println("Fields长度:" + fields.length + " 变量例如以下"); printFields(fields); System.out.println("=====构造方法分析====="); printConstructor(c); System.out.println("=====方法分析====="); printMethod(method); } public static void main(String[] args) { // TODO Auto-generated method stub Behavior be = new Behavior(); Person p = new Person("chiwei", 26, new String[] { "1", "2" }, be); new ObjectAnalyzer().analyzer(p); } }
执行结果例如以下:
=====属性变量的分析=====
Fields长度:6 变量例如以下
private java.lang.String username
private int age
static char sex
protected final double high
public [Ljava.lang.String; hobby
public reflect.Behavior be
=====构造方法分析=====
public reflect.Person()
public reflect.Person(java.lang.String int [Ljava.lang.String; reflect.Behavior )
=====方法分析=====
public void setUsername(java.lang.String )
public int getAge()
public void setAge(int )
public char getSex()
public static void setSex(char )
public double getHigh()
public [Ljava.lang.String; getHobby()
public void setHobby([Ljava.lang.String; )
public reflect.Behavior getBe()
public void setBe(reflect.Behavior )
public java.lang.String fun2(int int int java.lang.String double float char )
public java.lang.String getUsername()
版权声明:本文博主原创文章,博客,未经同意不得转载。
相关文章
- java反射菜鸟教程_Java反射
- import java.io 是什么意思_Java IO 详解
- JAVA常用数据结构及原理分析(面试总结)「建议收藏」
- java输出结果保留两位小数,经典好文
- Java代码是怎么运行的「建议收藏」
- java使用md5_Java_MD5的使用「建议收藏」
- java后端开发需要什么_从事Java后端开发,要学习哪些知识和技能?[通俗易懂]
- c++和java的前景谁更好?
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java webservice实现_JAVA WebService的实现方式
- Java基础入门笔记05——面向对象,创建对象的内存分析,继承,封装,多态,object类,this&&super,方法重写,引用类型的强制转换,instanceof,抽象类,内部类,接口,异常。[通
- 【说站】java继承的优缺点分析
- 【说站】java重载方法的参数设置
- Java转换流_java中的字符使用什么编码
- native2ascii java_Native2Ascii和Ascii2Native的Java实现
- JAVA遍历数组的三种方法_java遍历object数组
- Java—java.util.calendar类详解「建议收藏」
- 一致性hash算法java_一致性hash和普通hash
- java 内存分析工具 生成 dump_java内存检测工具
- 读书笔记 | 类的使用 | Effective Java 3
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-193 Password Suspects(C++&Java)
- Java基础学习笔记十七 集合框架(三)之Map详解编程语言
- 一个简单的java死锁示例详解编程语言
- java多线程系列(九)—ArrayBlockingQueue源码分析详解编程语言
- Porting .Net RSA xml keys to Java详解编程语言
- Java线程池的分析和使用详解编程语言
- 程序Linux命令调用Java程序实现交互(linux命令java)
- 连接MySQL连接技术之Java实现(java的mysql)
- java中堆和栈的区别分析