美文网首页
Java的反射和内省

Java的反射和内省

作者: 风雪幻城 | 来源:发表于2019-04-30 14:12 被阅读0次

1.反射
反射是指在运行过程中,可以获取任意类的属性和方法信息;
对于任意对象,都可以获取调用其任意方法;
这种动态获取类信息和动态调用对象方法的方式称为Java语言的反射机制;

public class ReflectTest {
    public static void main(String[] args) {
        User user = new User();
        try {
            Field nameField = user.getClass().getDeclaredField("name");//获取属性name的对象
            nameField.setAccessible(true);//解除权限检查
            nameField.set(user,"xiaomi");//设置属性值
            String name = (String)nameField.get(user);//获取属性值
            System.out.println(name);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2.内省
标准JavaBean类,属性值的操作是由其get和set方法来操作的;
内省(Introspector)是Java语言对JavaBean类属性、事件的处理方法;
Java提供了一套API来访问某个属性的getter/setter方法,这些API存放在java.beans中;

public class IntrospectorTest {
    public static void main(String[] args) {
        User user = new User();

        try {
            //操作指定属性名称的属性
            PropertyDescriptor pd = null;
            pd = new PropertyDescriptor("name", User.class);
            Method w = pd.getWriteMethod();//获取属性的set方法
            w.invoke(user, "mini");
            Method r = pd.getReadMethod();//获取属性的get方法
            r.invoke(user, null);
            System.out.println(user.toString());

            //操作所有属性
            BeanInfo bi = Introspector.getBeanInfo(User.class);
            PropertyDescriptor[] pds = bi.getPropertyDescriptors();
            for(PropertyDescriptor p : pds){

            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

相关文章

  • Java反射和内省

    反射 反射 (Reflection) ,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性...

  • Java的反射和内省

    1.反射反射是指在运行过程中,可以获取任意类的属性和方法信息;对于任意对象,都可以获取调用其任意方法;这种动态获取...

  • Javassist之内省与定制(一)

    CtClass提供了内省的方法。Javassist的内省机制兼容Java的反射API。CtClass提供了getN...

  • 不学无数——反射和内省的区别

    反射和内省的区别 内省是基于反射实现的,主要用来操作JavaBean,通过内省可以很方便的动态获得bean的set...

  • Java内省机制(Introspector)

    内省 通过反射的方式操作 JavaBean 的属性内省基于反射实现,主要用于操作JavaBean,Introspe...

  • Java基础

    一、反射&内省 1、反射 反射会有些许性能消耗,因为它把装载期做的事情搬到了运行期。 2、JavaBean内省 内...

  • 2 内省

    1、内省(Introspector) — JavaBean内省基于反射实现,主要用于操作JavaBean,通过内省...

  • (反射+内省机制的运用)处理jdbc的结果集

    1、原理:反射+内省 2、反射:动态创建对象 3、内省:动态处理对象的属性值 4、结果集处理: (1)把结果集中的...

  • 《设计模式之禅》读书笔记-2.6-代理模式

    2.6 代理模式 代理的原理可先参看此文章:Java基础-001-枚举、反射、类加载器、内省、注解、泛型、代理 定...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

网友评论

      本文标题:Java的反射和内省

      本文链接:https://www.haomeiwen.com/subject/kpymnqtx.html