Java反射机制

一、获取Class类的对象的三种方式

(1)使用Object类中的getClass()方法

    //通过对象的getClass()方法
    Person person = new Person("夏侯惇","男",38);
    Class clazz = person.getClass();

(2)类  .Class

//通过类 .class
Class personClass = Person.class;

(3)通过Class类的forName()方法

        使用此方法需要抛出ClassNotFoundException异常,或者用try,catch进行捕获

//通过Class.forName方法
Class clazz = Class.forName("cn.bytecollege.reflectDemo.Person");

二、通过反射实例化对象

(1)调用无参构造方法实例化对象

Class<Person> personClass = Person.class;
//通过Class对象实例化类对象
Person person = (Person) personClass.newInstance();

        需要抛出InstantiationException(实例化异常)和 IllegalAccessException(非法访问异常)

(2)调用有参构造方法实例化对象

//获取有参构造方法
Constructor<Person> constructor = personClass.getConstructor(String.class, String.class, Integer.class);
//调用有参构造方法实例化对象
Person person = constructor.newInstance("赵子龙", "男", 28);

        需要抛出NoSuchMethodException (nosuch方法异常)和 InvocationTargetException(调用目标异常)

三、获取类的信息

(1)获取类所在的包

Class<Person> personClass = Person.class;
//获取包名
Package aPackage = personClass.getPackage();

(2)获取类的方法

        ①获取类的所有方法 .getMethons();

//获取所有方法
Method[] methods = personClass.getMethods();
//遍历输出所有方法
for (Method method:methods){
      System.out.println(method);
}

        注意:

                1.只能获取到public修饰的所有方法,获取不了private、protected、default修饰的方法。

                2.可以获取到继承的共有方法(比如从Object类继承的方法)。

        ②访问私有方法  .getDeclaredMethons()

        此方法只能获取本类的所有方法,不能获取从父类继承的方法。

Method[] declaredMethons = personClass.getDeclaredMethods();
for (Method method:declaredMethons){
       System.out.println(method);
   }

        

(3)调用类的方法

        ①invoke()

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值