JavaSEDemo20反射与内省

简介

  • 本文是2021/04/19整理的笔记
  • 赘述可能有点多,还请各位朋友耐心阅读
  • 本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进

Method类的方法

String getName()得到方法名字

Class<?> getReturnType() 得到返回值类型

Class<?>[ ] get

invoke方法的返回值就是调用的方法的返回值

练习

练习1: 写出获取Class对象的三种方式

  1. Source源代码阶段
    Class.forName()
  2. Class类对象阶段
    类名.Class
  3. Runtime运行时阶段
    对象名.getClass

练习2: 写出三种创建user对象的方式

new直接创建
newInstance
constructor

练习3: 调用User对象的eat()方法的2种方式

public class Test{
public static void main(String[] args) throws 
NoSuchMethodException, IllegalAccessException, 
InstantiationException, InvocationTargetException {
        //第一种调用方法
        User user1 = new User();
        user1.eat();
        //第二种调用方法
        User user2 = User.class.newInstance();
        Method method = User.class.getMethod("eat");
        Object o = method.invoke(user2);
        System.out.println("o = " + o);
    }
    }

练习4: 设置user对象的name属性的值的2种方法

 //设置student对象的name属性的值的2种方法
    public class Test{
    public static void main(String[] args) throws 
    IllegalAccessException, InstantiationException, NoSuchFieldException {
        //第一种
        User user1 = User.class.newInstance();
        user1.setName("张三");
        //第二种
        User user2 = new User();
        Field name = User.class.getDeclaredField("name");
        name.setAccessible(true);
        name.set(user2,"李四");
    }
    }

练习5: 得到user对象的name属性的值的2种方法

练习6: 动态查找调用Java类中的方法

标准的JavaBean

三个特征:
属性都是私有的
无参public构造
公有的getXXX以及setXXX方法。

java的内省

概念

内省(Inspector)机制就是基于反射的基础,Java 语言对 Bean 类属性、事件的一种缺省处
理方法.

内省涉及到类和接口

与Java内省有关的主要类与接口:

  1. 类:
  • java.beans.Introspector类:为获得JavaBean属性、事件、方法提供了标准方法;通常使用其中的getBeanInfo方法返回BeanInfo对象
  • java.beans.PropertyDescriptor类:用来描述一个属性,该属性有Getter和Setter方法。
  1. 接口:
  • java.beans.BeanInfo接口:不能直接实例化,通常通过Introspector类返回该类型对象,提供了返回属性描述对象(PropertyDescriptor)、方法描述对象(MethodDescriptor)、bean描述符(BeanDescriptor)对象的方法

Introspector类

内省涉及到类和接口

方法

内省确定属性名的方法
从getXXX和setXXX方法的XXX 第一个字母小写后确定属性名

内省确定属性名的方法

内省获取属性

用内省获取属性对应的getter和setter方法

内省属性的注意事项

BeanUtils

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值