黑马程序员技术交流社区
标题:
通过反射打印所有方法以及继承的(使用拼凑的方法)
[打印本页]
作者:
王峰峰
时间:
2014-4-5 11:25
标题:
通过反射打印所有方法以及继承的(使用拼凑的方法)
前天刚与享了个打印构造方法的,这次在复习的过程中写了这个打所有方法的,与大家分享一下,有什么不好的在地方,请大家多多指教。
一、测试类(这是我自己新建的一个类,当然也可以使用JAVA类库中的类,我看见张老师的里面一般用的是JAVA类库中的类。)
public class Person {
private String name ;
private int age ;
public Person(){}
public Person(String name, int age) {
super();
this.setName(name) ;
this.setAge(age) ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String say() {
return "我的姓名是:" + this.name + "; 我的年龄是:" + this.age ;
}
}
复制代码
这是操作方法:
import java.lang.reflect.Method;
import java.lang.reflect.Modifier ;
public class Test01 {
public static void main(String[] args) throws Exception{
Class<?> c = null ;
try{
c = Class.forName("wff.text1.Person") ;
}catch(Exception e) {
e.printStackTrace() ;
}
//返回Perosn对象中的方法,不包括继承
Method[] methods = c.getMethods() ;
//迭代每一个对象
for(Method method:methods) {
int mo = method.getModifiers() ; //以整数的形式返回方法的修饰符
System.out.print(Modifier.toString(mo) + " ") ; //打印修饰符
Class<?> reType = method.getReturnType() ; //取得方法的返回值类型
System.out.print(reType.getName() + " ") ; //打印类型
System.out.print(method.getName() + " (") ; //打印方法名称
Class<?>[] para = method.getParameterTypes() ; //取得参数类型
//打印方法里面的参数
for(int i=0; i<para.length; i++) {
System.out.print(para
.getName() + " arg" + i) ;
if(i<para.length-1) {
System.out.print(", ") ;
}
}
Class<?>[] exc = method.getExceptionTypes() ; //取得异常
if(exc.length>0){
System.out.print(") throws ") ;
for(int i=0; i<exc.length; i++) {
System.out.print(exc
.getName());
if(i<exc.length-1) {
System.out.print(", ") ;
}
}
System.out.println() ; //打印完异常进行换行
}else {
System.out.println(")") ;
}
}
}
}
写的不当的地地方,请大家多多指教……
作者:
王峰峰
时间:
2014-4-5 11:29
上面一个注释打错了,Method[] methods = c.getMethods() ;包括继承
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2