您的位置:首页 > 其它

关于反射的应用demo

2017-04-02 10:35 211 查看
public class Reflection {
public static int p;
private int qw;

public static void main(String[] args) throws ClassNotFoundException {
Class c1=Class.forName("test.Reflection");
Class superc1=c1.getSuperclass();
String s=Modifier.toString(c1.getModifiers());
if(s.length()>0) System.out.print(s+" ");
System.out.print("class "+c1.getName()+" ");
if(superc1!=null && superc1!= Object.class) System.out.print("extend "+superc1.getName());
Class[] intef=c1.getInterfaces();
for(int i=0;i<intef.length;i++){
if(i==0) System.out.print(" implement ");
System.out.println(intef[i].getName());
}

System.out.print("{");
System.out.println();
printConstructor(c1);
System.out.println();
printMotheds(c1);
System.out.println();
printFields(c1);
System.out.println("}");
}

public static void printConstructor(Class cl){
Constructor[] constructors=cl.getConstructors();
for(Constructor c:constructors){
String modefis=Modifier.toString(cl.getModifiers());
String name =c.getName();
System.out.print(modefis+" "+name+"(");
Class[] clzz=c.getParameterTypes();
for(int q=0;q<clzz.length;q++){
if(q!=0) System.out.print(",");
System.out.print(clzz[q].getName());
}
System.out.println(")");
}
}

public static void printMotheds(Class cl){
Method[] method=cl.getDeclaredMethods();
for(Method m:method){
String mod=Modifier.toString(m.getModifiers());
Class retType=m.getReturnType();
String name=m.getName();
Class[] clazz=m.getParameterTypes();
if(mod.length()>0) System.out.print(mod+" ");
System.out.print(retType+" "+name+"(");
for(int i=0;i<clazz.length;i++){
if(i!=0) System.out.print(",");
System.out.print(clazz[i].getName());
}
System.out.print(")");
Class[] cp=m.getExceptionTypes();
for(int i=0;i<cp.length;i++){
if(i!=0)System.out.print(",");
System.out.print(cp[i].getName());
}
System.out.println();
}
}

public static void printFields(Class cl){
Field[] f=cl.getDeclaredFields();
for(Field q:f){
q.setAccessible(true);
if(q.getModifiers()>0) System.out.print(Modifier.toString(q.getModifiers())+" ");
Class type=q.getType();
String name=q.getName();
System.out.println(type+" "+name+" ");
}
}
}


public class test.Reflection {
public test.Reflection()

public static void main([Ljava.lang.String;)java.lang.ClassNotFoundException
public static void printConstructor(java.lang.Class)
public static void printMotheds(java.lang.Class)
public static void printFields(java.lang.Class)

public static int p
private int qw
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: