反射获取一个类的构造方法

反射获取一个类的构造方法

public class Student extends Person implements Move,Study {
    String school;

    public Student() {
    }

    public Student(String school) {
        this.school = school;
    }
    private Student(String name,int age) {
        this.age=age;
    }
    public void showInfo(){
        System.out.println("学校是:"+this.school);
    }
    @Override
    public void moveType() {
        System.out.println("骑自行车上学!");
    }

    @Override
    public void studyInfo() {
        System.out.println("学习的是中学的知识!");
    }
}
public class Test01 {
    public static void main(String[] args) {
        try {
            Class clazz=Class.forName("com.reflex.cla.Student");//Class.forName(包名.类名)方法获取指定类的class实例
            Class superclass = clazz.getSuperclass();//获取父类
            System.out.println("父类 = "+superclass.getName());
            Class[] interfaces = clazz.getInterfaces();//获取当前类的所有接口
            for (Class anInterface : interfaces) {
                System.out.println("接口 = " + anInterface.getName());
                
            }
            Constructor[] cons = clazz.getConstructors();//获取类的公有的构造方法
            for (Constructor con : cons) {
                System.out.println("构造方法名称 = " + con.getName());//getName()取得方法的名称
                //getModifiers()取得方法的修饰符,返回数字1代表public
                System.out.println("构造方法名称 = " + con.getName()+"的修饰符是:"+con.getModifiers());
                Class[] parameterTypes = con.getParameterTypes();
                for (Class parameterType : parameterTypes) {
                    System.out.println("构造方法名称 = " + con.getName()+"的参数类型是:"+parameterType.getName());
                }
            }
            System.out.println("====================================");
            Constructor[] conts = clazz.getDeclaredConstructors();//获取类的所有的构造方法
            for (Constructor cont : conts) {
                System.out.println("---------------------");
                System.out.println("构造方法名称 = " + cont.getName());//getName()取得方法的名称
                //getModifiers()取得方法的修饰符,返回数字1代表public,返回数字2代表private
                System.out.println("构造方法名称 = " + cont.getName()+"的修饰符是:"+cont.getModifiers());
                Class[] parameterTypes = cont.getParameterTypes();//获取构造方法的参数类型,有几个参数数组元素就有几个
                for (Class parameterType : parameterTypes) {
                    System.out.println("构造方法名称 = " + cont.getName()+"的参数类型是:"+parameterType.getName());
                }
                System.out.println("---------------------");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值