在java领域编程中,内省机制相当的不错,可以省去我们程序员很多的不必要的代码

比如说:在jdbc工具类 我们可以将ResultSet结果集待到 javabean对象中

将http请求报文的数据 转换到一个  javabacn对象当中去  这样子可以省去我们很多的  request.getparameter('name')   request.getparameter("password")

还有理解各种持久框架 都是用到了内省机制编程  很重要,很重要,很重要

java内省机制核心类是 Introspector

来一个示例吧!

先写一个用户Bean类

package com.oa.domain;

import lombok.Data;

/**
* 注明:我这里使用了 lombok工具来自动生成 getter/setter方法
* 如果你没有配置,则自己手动写 getter/setter方法吧!!!
* @author Administrator
*
*/
@Data
public class User { private Integer id; //用户Id
private String userName; //用户名
private String password; //密码 }

使用内省机制获取所有的属性

package com.oa.test;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; import com.oa.domain.User; public class Demo1 { /**
* 刘诗华
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//获取User Bean字节码
BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
//获取所有的属性集合
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : propertyDescriptors) {
System.out.println("属性名:"+pd.getName());
} // 打印结果如下显示
// 属性名:class class是继承 extends Object类上面的属性
// 属性名:id
// 属性名:password
// 属性名:userName
} }

注意:如果我们只想要 User类中的所有属性 那我们只需要在获取的时候加上参数 Introspector.getBeanInfo(User.class,Object.class);

//获取User Bean字节码
BeanInfo beanInfo = Introspector.getBeanInfo(User.class,Object.class);
//获取所有的属性集合
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor pd : propertyDescriptors) {
System.out.println("属性名:"+pd.getName());
}
属性名:id
属性名:password
属性名:userName

01-Introspector内省机制的更多相关文章

  1. java内省机制Introspector

    访问JavaBean属性的两种方式 1)直接调用bean的setXXX或getXXX方法: 2)通过内省技术访问(java.beans包提供了内省的API),内省技术访问也提供了两种方式: a)通过P ...

  2. 2-java内省机制(Introspector)

    来一个简单的示例吧 package com.my.test; import java.beans.BeanInfo; import java.beans.Introspector; import ja ...

  3. java内省机制及PropertyUtils使用方法

    背景 一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值.但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像java.bean ...

  4. Java内省机制

    转自: https://blog.csdn.net/hahalzb/article/details/5972421 1.java内省机制其实通俗的理解为,对自身的进行一个扫描,这个扫描的对象就是我们普 ...

  5. Java的内省机制

    我现在的理解就是,Java的内省机制就是针对JavaBean的,可以获取到类的属性名称,以及属性的Getter和Setter方法,应该是在写框架的时候才会用到内省机制,还有一个地方可以用到内省机制,就 ...

  6. JDK 之 Java Bean 内省机制

    JDK 之 Java Bean 内省机制 JDK 规范目录(https://www.cnblogs.com/binarylei/p/10200503.html) JavaBean 是一种特殊的 Jav ...

  7. 【代码笔记】Java——远程监控、反射、代理、内省机制

    远程控制的基本原理 远程控制(RemoteControl)拥有控制端和被控端双方. 控制方通过请求,取得对远端的操作,实现远端的事件回放功能,同时,应该看得到远端桌面的画面.而被控方必须在建立Serv ...

  8. 内省机制(操作javaBean的信息)

    内省机制(操作javaBean的信息) ----是不是联想到了反射机制了哈,这两者有什么区别呢? 1.内省机制和反射机制的联系 ■ 其实内省机制也是通过反射来实现的,而反射是对一切类都适合去动态获取类 ...

  9. (反射+内省机制的运用)简单模拟spring IoC容器的操作

    简单模拟spring IoC容器的操作[管理对象的创建.管理对象的依赖关系,例如属性设置] 实体类Hello package com.shan.hello; public class Hello { ...

随机推荐

  1. linux 程序无缘无故推出 没有core文件 broken pipe Resource temporarily unavailable

    问题 1. linux socket 服务端程序 无缘无故退出 . 2. 客户端大量访问服务端后,出现  Resource temporarily unavailable错误 问题分析: 1. 是否有 ...

  2. Python—迭代器与生成器

    迭代器与生成器 生成器(generator) 先来了解一下列表生成器: list = [i*2 for i in range(10)] print(list)>>>>[0, 2 ...

  3. python语法之函数

    函数: 将特定功能代码编写在一个函数里 便于阅读和复用 对一组表达特定功能表达式的封装 使程序模块化 python内置函数: input(),print(),eval()... 函数定义 函数语法格式 ...

  4. SharePoint REST API - 使用REST接口对列表设置自定义权限

    博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...

  5. python 如何生成好看的报告,在unittest的框架下

    怎么生成报告:需要导入BeautifulReport import BeautifulReport as bf import unittest class Test_login(unittest.Te ...

  6. 在Fiddler中添加自己所需的显示列

    有时候我们想了解请求响应的时间.服务器IP等相关信息,Fiddler默认是没有显示的,这个时候就需要我们借助高级用法---自定义显示列, 其实主要就是操作这个文件Fiddler2\Scripts\Cu ...

  7. FCC JS基础算法题(4):Title Case a Sentence(句中单词首字母大写)

    题目描述: 确保字符串的每个单词首字母都大写,其余部分小写.像'the'和'of'这样的连接符同理. 算法: function titleCase(str) { // 转小写及分割成数组 var st ...

  8. Flask关于请求表单的粗浅应用及理解+简单SQL语句温习

    1.请求表单 请求表单的知识点是flask数据请求中很小的一部分,首先要了解一下GET和POST请求:http://www.w3school.com.cn/tags/html_ref_httpmeth ...

  9. Linux 查看端口被什么程序占用

    lsof -i:8899 输出: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 38889 root 329u IPv6 5883661 ...

  10. 王者荣耀交流协会第五次Scrum立会

    会议时间:2017年10月24号   11:40-12:12,时长32分钟. 会议地点:信息科学与技术学院107教室 昨天工作: 组长使用ZedGraph实现了折线图的生成,基本符合需求,组员们分别完 ...