JAVA 反射
Person.java
package reflect; public class Person { private String name; private int age; public Person() { } public Person(String name) { this.name = name; } public Person(int age) { this.age = age; } public Person(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "[name = " + name + ", age = " + age + "]"; } }
ReflectTest.java
package reflect; import java.lang.reflect.*; public class ReflectTest { /** * @param args */ public static void main(String[] args) { Class<?> cl = null; try { cl = Class.forName("reflect.Person"); String modifiers = Modifier.toString(cl.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.println(cl.getName() + "{"); } catch (Exception e) { e.printStackTrace(); } printFields(cl); System.out.println(); printConstructors(cl); System.out.println(); printMethods(cl); System.out.println("}"); } public static void printConstructors(Class<?> cl){ Constructor<?>[] c = cl.getConstructors(); for (int i = 0; i < c.length; i++) { String modifiers = Modifier.toString(c[i].getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); String name = c[i].getName(); System.out.print(name + "("); Class<?>[] paramTypes = c[i].getParameterTypes(); for (int j = 0; j < paramTypes.length-1; j++) System.out.print(paramTypes[j].getName() + ","); if (paramTypes.length > 0) System.out.print(paramTypes[paramTypes.length-1]); System.out.println(");"); } } public static void printFields(Class<?> cl) { Field[] fields = cl.getDeclaredFields(); for (Field f : fields) { String modifiers = Modifier.toString(f.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); String name = f.getName(); System.out.println(name + ";"); } } public static void printMethods(Class<?> cl) { Method[] methods = cl.getDeclaredMethods(); for (Method m : methods) { String modifiers = Modifier.toString(m.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); Class<?> retType = m.getReturnType(); String name = m.getName(); System.out.print(retType.getName() + " " + name + "("); Class<?>[] paramTypes = m.getParameterTypes(); for (int i = 0; i < paramTypes.length; i++) { if (i > 0) System.out.print(", "); System.out.print(paramTypes[i]); } System.out.println(");"); } } }
打印结果:
public reflect.Person{ private name; private age; public reflect.Person(class java.lang.String); public reflect.Person(int); public reflect.Person(java.lang.String,int); public reflect.Person(); public java.lang.String toString(); public java.lang.String getName(); public void setName(class java.lang.String); public void setAge(int); public int getAge(); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。