A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

前天刚与享了个打印构造方法的,这次在复习的过程中写了这个打所有方法的,与大家分享一下,有什么不好的在地方,请大家多多指教。
一、测试类(这是我自己新建的一个类,当然也可以使用JAVA类库中的类,我看见张老师的里面一般用的是JAVA类库中的类。)
  1. public class Person {
  2.         private String name ;
  3.         private int age ;
  4.        
  5.         public Person(){}
  6.        
  7.         public Person(String name, int age) {
  8.                 super();
  9.                 this.setName(name) ;
  10.                 this.setAge(age) ;
  11.         }

  12.         public String getName() {
  13.                 return name;
  14.         }

  15.         public void setName(String name) {
  16.                 this.name = name;
  17.         }

  18.         public int getAge() {
  19.                 return age;
  20.         }

  21.         public void setAge(int age) {
  22.                 this.age = age;
  23.         }
  24.        
  25.         public String say() {
  26.                 return "我的姓名是:" + this.name + "; 我的年龄是:" + this.age ;
  27.         }
  28. }
复制代码


这是操作方法:

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(")") ;
                        }
                }
        }
}

写的不当的地地方,请大家多多指教……

1 个回复

倒序浏览
上面一个注释打错了,Method[] methods = c.getMethods() ;包括继承
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马