zoukankan      html  css  js  c++  java
  • Java的内省机制

      我现在的理解就是,Java的内省机制就是针对JavaBean的,可以获取到类的属性名称,以及属性的Getter和Setter方法,应该是在写框架的时候才会用到内省机制,还有一个地方可以用到内省机制,就是JavaBean和Map的转化的时候,需要JavaBean的内省机制去获取属性的值,这个例子在下篇文章里介绍。

    代码,我先写一个JavaBean的类

    package com.Day17;
    
    public class IntrospectorDemo {
        private String name;
        private Integer age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }

    至于什么是JavaBean去百度查吧,我的理解就是有Getter和Setter属性

    main方法的类:

    package com.Day17;
    
    import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    
    public class Test {
        public static void main(String[] args) throws Exception{
            //Java内省机制,其实就是获取类的属性和属性类型
            //1,获取JavaBean的描述对象
            BeanInfo beanInfo= Introspector.getBeanInfo(IntrospectorDemo.class,Object.class);
            //2,获取JavaBean中的属性的描述器
            PropertyDescriptor [] pds=beanInfo.getPropertyDescriptors();
            //3,打印出来
            for (PropertyDescriptor pd:pds) {
                System.out.println("属性名:"+pd.getName());
                System.out.println("Getter:"+pd.getReadMethod());
                System.out.println("Setter:"+pd.getWriteMethod());
                System.out.println("----------------------------------");
           
    //属性是可以执行的,这应该就是反射了
      
           System.out.println(pd.getReadMethod().invoke(new People()));
           System.out.println("----------------结束---------------");
    } } }

    打印结果:

  • 相关阅读:
    (树链剖分+线段树)POJ
    (树上莫队)HDU
    (LCA+树上主席树)FZU 2237
    (预处理+莫队算法)HDU
    (莫队算法)两题莫队算法统计数量的入门题
    (莫队算法)CodeForces
    sublime配置C++14
    (dfs序+莫队算法/启发式合并/树分治)Codeforces 375D
    (线段树两个lazy标记需要设定优先级)UVA 11992
    (线段树区间合并)UVA 11235
  • 原文地址:https://www.cnblogs.com/yunquan/p/10016009.html
Copyright © 2011-2022 走看看