取得类的--> 1.继承的类和接口 2.方法 代码如下: import java.lang.reflect.AnnotatedType; import java.lang.reflect.Modifier; import java.lang.reflect.Method; abstract class A{} class Z extends A implements Runnable, Comparable<Z>{ private String name; private char sex; private int age, score; public Z(String name, char sex, int age, int score){ this.name = name; this.sex = sex; this.age = age; this.score = score; } public void run(){ System.out.println("线程运行"); } public String toString(){ return "姓名:"+this.name+",性别:"+this.sex+",年龄:"+this.age+",成绩:"+this.score; } public int compareTo(Z z){ if(this.score>z.score) return -1; else if(this.score<z.score) return 1; else{ if(this.age<z.age) return -1; else if(this.age>z.age) return 1; else return 0; } } } public class ConstructionOfClass { public static void main(String[] args){ Class<?> c = null; try{ c = Class.forName("Z"); } catch(Exception e){ e.printStackTrace(); } Z z = null; try{ z = (Z)c.getConstructors()[0].newInstance("张三", '男', 20, 100); } catch(Exception e){ e.printStackTrace(); } new Thread(z).start();//线程运行 Class<?> inf[] = c.getInterfaces(); Class<?> sc = c.getSuperclass(); System.out.println("-->Interfaces implementing:"); for(int i = 0; i<inf.length; i++){ System.out.println(inf[i].getName()); } System.out.println("-->Classes inheriting:"+sc.getName()); Method m[] = c.getMethods();//getMethods()取得所有方法,包括继承的类和实现的接口中的方法 System.out.println("-->Methods:"); for(int j = 0; j<m.length; j++){ int mod = m[j].getModifiers(); AnnotatedType ret = m[j].getAnnotatedReturnType(); Class<?> para[] = m[j].getParameterTypes(); if(m[j].getName()=="Z")//若返回值与类名相同,则为构造方法,不输入返回值 System.out.print(Modifier.toString(mod)+" "+m[j].getName()+"("); else System.out.print(Modifier.toString(mod)+" "+ret+" "+m[j].getName()+"("); for(int k = 0; k< para.length-1; k++){ if(para.length<1) break;//无参方法的输入 System.out.print(para[k].getName()+" arg"+(k+1)+",");//有参方法的输出 } if(para.length<1) System.out.println(")"); else System.out.println(para[para.length-1]+" arg"+(para.length)+")"); } } }
运行结果如下: