import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class reflectAPI {
public static void main(String args[]) throws ClassNotFoundException {
Class c = Class.forName(args[0]);
System.out.println("解析类:"+args[0]);
Field[] f = c.getDeclaredFields();
System.out.println("属性的解析:");
for(Field fs:f) {
System.out.println("---------------------------------------------------");
System.out.println("属性(具体):"+fs.toString());
System.out.println("属性名:"+fs.getName());
System.out.println("数据类型:"+fs.getType());
System.out.println("访问权限:"+Modifier.toString(fs.getModifiers()));
System.out.println("---------------------------------------------------");
}
System.out.println("方法的解析:");
Method[] methods = c.getDeclaredMethods();
for(Method m : methods) {
System.out.println("---------------------------------------------------");
System.out.println("方法(具体):"+m.toString());
System.out.println("方法名:"+m.getName());
System.out.println("访问权限:"+Modifier.toString(m.getModifiers()));
System.out.println("方法返回值类型:"+m.getReturnType());
Class[] ParameterTypes = m.getParameterTypes();
if(ParameterTypes.length != 0) {
System.out.println("方法参数类型表列:");
for(Class p : ParameterTypes) {
System.out.println(p.toString());
}
}else {
System.out.println("此方法空入参!!!");
}
System.out.println("---------------------------------------------------");
}
System.out.println("构造函数的解析:");
Constructor[] ctors = c.getConstructors();
for(int i = 0;i < ctors.length;i ++) {
System.out.println("---------------------------------------------------");
System.out.println("方法(具体):"+ctors[i].toString());
System.out.println("方法名:"+ctors[i].getName());
System.out.println("访问权限:"+Modifier.toString(ctors[i].getModifiers()));
Class[] ParameterTypes = ctors[i].getParameterTypes();
if(ParameterTypes.length != 0) {
System.out.println("方法参数类型表列:");
for(Class p : ParameterTypes) {
System.out.println(p.toString());
}
}else {
System.out.println("此方法空入参!!!");
}
System.out.println("---------------------------------------------------");
System.out.println("解析类的父类:");
Class superClass = c.getSuperclass();
System.out.println(superClass.toString());
System.out.println("解析类的接口:");
Class[] interfaces = c.getInterfaces();
for(Class iter : interfaces) {
System.out.println(iter.toString());
}
}
System.out.println("解析类所在的包:");
System.out.println(c.getPackage().toString());
}
}
参考:
http://blog.csdn.net/yongjian1092/article/details/7364451
Java反射API(应用篇)
最新推荐文章于 2024-06-30 16:02:09 发布