java.lang.reflect.*;
首先要得到类的Class
得到Class对象的三种方法
-
类名.class Class<?> cls = String.class; //Class cls = String.class;
-
对象.getClass(); String str = "abc"; Class<?> cls = str.getClass(); //Class cls = str.getClass();
-
Class.forName(类的全名) Class<?> cls = Class.forName(java.lang.String); //Class cls = Class.forName(java.lang.String);
得到类的信息
-
得到类的名称
"类名称"+cls.getName(); //得到修饰符 int modifier = cls.getModifiers(); System.out.printf("%s %s %s %n",Modifier.toString(modifier), Modifier.isInterface(modifier)?"Interfacec":"class", cls.getName());
-
是否是接口
cls.isInterface();
-
父类的名称
"父类名称"+cls.getSuperclass().getName();
-
所在的包
Package p = cls.getPackage(); p.getName();
-
取得声明的数据成员对象
Field[] fields = cls.getDeclaredFields(); for(Field field:fields) { System.out.println("成员:"+field.toString()); }
-
得到声明的构造方法
Constructor[] constructors = cls.getDeclaredConstructors(); //Constructor[] constructors = cls.getConstructors(); for(Constructor constructor:constructors) { System.out.println("构造方法:"+constructor.toString()); }
-
得到声明的方法
Method[] methods = cls.getDeclaredMethods(); //Method[] methods = cls.getMethods(); 所有方法 for(Method method : methods){ System.out.println("方法: " + method.toString()); }
-
实现的接口
Class<?> interfaces[] = cls.getInterfaces(); //Class interfaces[] = cls.getInterfaces(); for (Class<?> inte : interfaces) //for(Class inte : interfaces) { System.out.println("实现接口:"+inte.toString()); }