Java中的内省
package com.cn.gbx; public class Person {
//这里指的是单纯的字段
private String name;
private int age; //有多少种不同的getter / setter就有多少个属性 这里三个但是还要加上 Object类里面的一个getClass 共四个
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 getDetail() {
return name + " : " + age;
}
}
public class DemoTest {
/*
* 通过内省获得bean的所有属性
*/
@Test
public void test1() throws IntrospectionException {
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
PropertyDescriptor[] propertyDescriptor = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor p : propertyDescriptor) {
System.out.println(p.getName());
}
}
/*
* 删掉父类的属性
*/
@Test
public void test2() throws IntrospectionException {
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class, Object.class);
PropertyDescriptor[] propertyDescriptor = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor p : propertyDescriptor) {
System.out.println(p.getName());
}
}
/*
* 得到指定属性
*/ @Test
public void test3() throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Person p = new Person();
PropertyDescriptor descriptor = new PropertyDescriptor("name", Person.class);
Method method = descriptor.getWriteMethod();
method.invoke(p, "gbx");
System.out.println("write " + p.getName()); Method method2 = descriptor.getReadMethod();
System.out.println("read " + method2.invoke(p, null)); System.out.println("获得属性的类型 : " + descriptor.getPropertyType());
}
}
Java中的内省的更多相关文章
- Java核心_内省
Java核心_内省 查看java的api,发现有一个包java.bean咦,这个包是干什么的呢,原来,它是用来操作JavaBean对象的! 一.内省操作①JavaBean:一种特殊的Java类无参构造 ...
- Java高新技术 JavaBean内省
Java高新技术 JavaBean内省 知识概要: (1)了解JavaBean内省 (2)JavaBean的简单内省操作 ...
- Java中的反射机制(一)
基本概念 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? 答案是肯定的. 这种动态获取类的信息以及动态调用对象的方法的功能来自于J ...
- java中异常和集合
1. java中处理错误情况有两种,1 Error,2 Exception error是无法处理的,Exception是可以处理的情况. Exception中又有两种情况,RuntimeExcep ...
- 2018.8.1 Java中的反射和同步详解
为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他 ...
- Java中的类反射
一.反射的概念 : 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序 ...
- Java基础之内省
Java基础之内省 什么是内省 首先,我们要知道什么是内省.按我自己的理解就是在反射的原理上进行封装,来更方便的操作JavaBean JavaBean就是特殊格式的类,其规范为: JavaBean ...
- Java中的反射原理以及简单运用(原理+例子)
@ 目录 学习总结 1. 为什么要使用反射 2. 反射的概念 3. Java反射加载过程 4. 反射优缺点 5. 字节码对象理解 6. 获取字节码对象(.class)的三种方式 7. 反射常用API ...
- Java中的反射以及简单运用(原理+例子)
Java反射 学习内容 1. 为什么要使用反射 2. 反射的概念 3. Java反射加载过程 4. 字节码对象理解 5. 获取字节码对象(.class)的三种方式 6. 反射常用API 8. 反射综合 ...
随机推荐
- DLL:加载错误
一:试图加载格式不正确的程序 把目标平台Any CPU 设置为X86:
- Mac OX 隐藏文件夹,文件,应用,磁盘的2种方法 hide finder folder, file, application, volume in 2 ways
经常需要主目录下隐藏一些文件夹之类的, 第一想到的当然就是:在要隐藏的文件夹前面加『.』(leading dot),这个用法当然可以的了 用习惯了Linux/GNU系统的,基本习惯使用这种办法 但是, ...
- MySQL 5.7 SYS系统SCHEMA
版权声明:本文为博主原创文章,未经博主允许不得转载. 在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:MySQL4.1 提供了information_schema 数据字典.从此可以 ...
- 如何在VS2013中新建WindowsService定时任务
http://jingyan.baidu.com/article/cd4c2979e9330d756f6e6070.html 很多人都想做定时任务,但是没有不知道如何下手,现在就用WindowsSer ...
- cocospod 安装和使用
一 ruby 安装 要安装coocspod 首先需要安装ruby,可以先安装xcode,在安装macport 下载地址,最后执行命令 port install ruby 二.安装CocoaPods 1 ...
- 浏览器检测navigator 对象
1.浏览器及版本号不同的浏览器支持的功能.属性和方法各有不同.比如IE 和Firefox 显示的页面可能就会有所略微不同. alert('浏览器名称:' + navigator.appName); a ...
- samba服务器源码安装(非rpm)
首先我们创建一个文档,边安装配置samba,边写教程. 从www.samba.org下载samba最新源码包,我下载的是samba-3.0.7.tar.gz,把它放在我的目录的中/root/lova/ ...
- 20150812 Asp.net 父窗体获取子窗体的返回值,更新父窗体文本控件(应用)
1. 父窗体 **************************************** using System;using System.Collections;using System.C ...
- java中的动态代理机制
java中的动态代理机制 在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface).另一个则是 Proxy(Class),这一个类和接口是实现 ...
- 使用Jvisualvm监控JVM的内存、CPU、线程
最近做性能测试发现很多性能问题,面对一些开发小白的数据结构思想,真想喊一声:放开那个代码,让我来!冲动. 面对WEB站点开发,性能测试是经常要做的,下面一种介绍如何结合性能测试工具,更好的监控WEB服 ...