首页 > 代码库 > java内省小记
java内省小记
//为了让程序员更好的操作javabean的属性,JDK提供了一套API用来访问某个属性的setter或getter方法。这就是内省 //内省(Introspector)是java语言对javabean类属性,方法和事件的一种标准处理方式。 //内省访问javabean有两种方法。 //设置javaBean属性值。 public static void main(String[] args) throws Exception { //1.方式一 /*//实例化一个person对象 Person beanObj = new Person(); //通过Introspector对象获取Person对象的BeanInfo对象 BeanInfo beanInfoObject = Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass()); //通过BeanInfoObject的getPropertyDescriptors方法,的到Bean中的所有属性信息。 propertyDescriptors = beanInfoObject.getPropertyDescriptors(); //便利属性信息,通过getName的到属性名,通过getPropertyType得到属性类型对象。 for (int i = 0; i <propertyDescriptors.length; i++) { String name = propertyDescriptors[i].getName(); Class<?> propertyType = propertyDescriptors[i].getPropertyType(); System.out.println(name+"("+propertyType.getName()+")"); }*/ //方式二 直接通过PropertyDescriptor对象,获取属性信息。 //创建person类的对象 Person p = new Person(); //通过属性描述器,获得那么属性描述信息。 PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass()); //获取name属性的setter方法。 Method methodName = pd.getWriteMethod(); //调用setter方法。设置name值 methodName.invoke(p,"小米"); System.out.println(p);
//相应的person类
private String name; private int age; public Person(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return this.name+":"+this.age; }
java内省小记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。