import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
class Node{
private int num;
private String name;
public Node(int num,String name){}
public void fun(int a,int b){}
protected static void function(){}
}
public class Main {
public static void main(String[] args) {
Node node=new Node(1,"");
printConstructors(node);
printField(node);
printMethod(node);
}
public static void printConstructors(Object obj){
Class clazz=obj.getClass();
Constructor[] constructs=clazz.getDeclaredConstructors();
for(Constructor c:constructs){
/**
* getModifiers()返回一个int型的数,需要使用Modifier.toStrinf()
* 方法进行转换
*/
System.out.print(Modifier.toString(c.getModifiers())+" ");
System.out.print(c.getName()+" ");
System.out.print("(");
Class[] parameterTypes=c.getParameterTypes();
for(int i=0;i<parameterTypes.length;i++){
if(i>0){
System.out.print(",");
}
System.out.print(parameterTypes[i].getName()+" arg"+i);
}
System.out.println(");");
}
}
public static void printField(Object obj){
Class clazz=obj.getClass();
Field[] fields=clazz.getDeclaredFields();
for(Field f:fields){
System.out.print(Modifier.toString(f.getModifiers())+" ");
System.out.print(f.getType().getName()+" ");
System.out.println(f.getName());
}
}
public static void printMethod(Object obj){
Class clazz=obj.getClass();
/**
* getDeclaredMethods()查看本类中所有的方法
* getMethods()查看本类中的public方法和从父类中继承的public方法
*/
Method[] methods=clazz.getDeclaredMethods();
for(Method m:methods){
System.out.print(Modifier.toString(m.getModifiers())+" ");
System.out.print(m.getReturnType()+" ");
System.out.print(m.getName()+" ");
System.out.print("(");
Class[] parameterTypes=m.getParameterTypes();
for(int i=0;i<parameterTypes.length;i++){
if(i>0){
System.out.print(",");
}
System.out.print(parameterTypes[i].getName()+" arg"+i);
}
System.out.println(");");
}
}
}
利用反射查看类的结构
最新推荐文章于 2024-07-22 14:15:06 发布