使用java反射机制可以在运行时期(runtime)检查java类的信息,通过获取类的信息你可以获取以下信息:
1.class对象
2.类名
3.修饰符
4.包信息
5.父类
6.实现的接口
7.构造器
8.方法
9.变量
10.注解
获取class对象
Class myObject=MyObject.class
或者使用类名
String className="";//全类名
Class clazz=Class.forName(className);
或者
Class c=new Class();
Class clazz=c.getClass();
获取内部类,或者接口(public)
Class<?>[] classes=clazz.getClasses();
System.out.println(Array.toString(classes));
获取所有内部类或者接口
Class<?>[] c =Test.class.getDeclaredClasses();
System.out.println(Arrays.toString(c));
获取修饰符
Class aClass=...;
int modifiers=aClass.getModifiers();
使用Modifier类中的方法来检查修饰符类型
包信息
Class aClass=...
Package package=aClass.getPackage();
父类
Class superclass=aClass.getSuperclass();
实现的接口
Class[] interfaces=aClass.getInterfaces();
构造器
Constructor[] constructor=aClass.getConstructors();
方法
获取所有公有方法
Method[] method=aClass.getMethods();
获取调用的方法所在的类
Method m=...;
m.getDeclaringClass().getCanonicalName();
变量
获取成员变量
Field[] method=aClass.getFields();
注解
Annotation[] annotations=aClass.getAnnotations();
获取类型参数
TypeVariable<?>[] typeParameters = Class.forName("java.util.HashMap").getTypeParameters();
for(TypeVariable<?> t : typeParameters)
System.out.print(t.getName()+",");
网友评论