javaBeans 属性的概念

不只是字段,而是其get set 方法

且该get方法有返回值的称为属性,继承Object类的getClass方法

package com.swift.demo1;

public class Person {
String name;
int age;
String password;
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAd() {//这个算一个属性,虽让没有字段,但如果没有返回值不算一个属性
return "getAd.....";
}
}

属性个数

package com.swift.demo1;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; import org.junit.jupiter.api.Test; public class TestIntro {
@Test
public void test1() throws Exception {
BeanInfo info=Introspector.getBeanInfo(Person.class);
PropertyDescriptor[] pds=info.getPropertyDescriptors();
for(PropertyDescriptor des:pds) {
System.out.println(des.getName());
}
}
}

阻止父类的getClass属性用

package com.swift.demo1;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; import org.junit.jupiter.api.Test; public class TestIntro {
@Test
public void test1() throws Exception {
BeanInfo info=Introspector.getBeanInfo(Person.class,Object.class);
PropertyDescriptor[] pds=info.getPropertyDescriptors();
for(PropertyDescriptor des:pds) {
System.out.println(des.getName());
}
}
}

BeanUtils使用jar包

需要两个:

都可以在Apache网站下载

BeanUtils具有比Introspector更强大的功能,可以在基本数据类型间直接转换,也可以把文本框中的字符串通过注册器转换器进行转换

自己转日期格式

package com.swift.demo1;

import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.junit.Test; public class TestUtils {
@Test
public void test() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new Converter() { @Override
public Object convert(Class type, Object value) {
String str=(String) value;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);//
}
}
}, Date.class); BeanUtils.setProperty(p, "name", "swift");
BeanUtils.setProperty(p, "age", "30");
BeanUtils.setProperty(p, "password", "123");
BeanUtils.setProperty(p, "date", "2018-02-19"); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
}
}

可以用现成的

package com.swift.demo1;

import java.lang.reflect.InvocationTargetException;
import java.util.Date; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test; public class TestUtils {
@Test
public void test() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new DateLocaleConverter(),Date.class); BeanUtils.setProperty(p, "name", "swift");
BeanUtils.setProperty(p, "age", "30");
BeanUtils.setProperty(p, "password", "123");
BeanUtils.setProperty(p, "date", "2018-02-19"); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
}
}

集合map加到BeanUtils

package com.swift.demo1;

import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test; public class TestUtils {
@Test
public void test() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new DateLocaleConverter(),Date.class); BeanUtils.setProperty(p, "name", "swift");
BeanUtils.setProperty(p, "age", "30");
BeanUtils.setProperty(p, "password", "123");
BeanUtils.setProperty(p, "date", "2018-02-19"); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
} @Test
public void test1() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p=new Person(); ConvertUtils.register(new DateLocaleConverter(),Date.class); Map<String, String> map=new HashMap<String, String>();
map.put("name", "swift");
map.put("age", "30");
map.put("password", "123");
map.put("date", "2018-02-19"); BeanUtils.populate(p, map); System.out.println(p.getName());
System.out.println(BeanUtils.getProperty(p, "name"));
System.out.println(BeanUtils.getProperty(p, "age"));
System.out.println(BeanUtils.getProperty(p, "password"));
System.out.println(BeanUtils.getProperty(p, "date"));
}
}

javabeans 内省 introspector BeanUtils的更多相关文章

  1. JavaBeans与内省(Introspector)

    JavaBean与Introspector 反射和内省操作很多时候都是在以后要做框架的时候作用非常大.    现在你学的是面向对象编程,即:你所写代码都能够找到对应的类或接口,找到具体的方法写出对应的 ...

  2. Java 内省(Introspector)和 BeanUtils

    人生若只如初见,何事秋风悲画扇. 概述 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息, ...

  3. 内省(introspector)------>JavaBean

    内省(introspector)------>JavaBean    1.问什么要学内省?        开发框架时,经常需要Java对象的属性来来封装程序的数据,每次使用反射技术完成此操作过于 ...

  4. 内省(Introspector)

    内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法 目的:主要用于传递数据信息,这种类中的方法主要用于访问私有的字段(且方法名符合某种命名规则) p ...

  5. JavaEE JavaBean 反射、内省、BeanUtils

    JavaEE JavaBean 反射.内省.BeanUtils @author ixenos JavaBean是什么 一种规范,表达实体和信息的规范,便于封装重用. 1.所有属性为private2.提 ...

  6. 深入理解Java:内省(Introspector)

    深入理解Java:内省(Introspector) 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传 ...

  7. JAVA中反射机制五(JavaBean的内省与BeanUtils库)

    内省(Introspector) 是Java 语言对JavaBean类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法 ...

  8. Java 内省(Introspector)深入理解

    Java 内省(Introspector)深入理解 一些概念: 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类 ...

  9. 【小家Spring】聊聊Spring中的数据绑定 --- BeanWrapper以及内省Introspector和PropertyDescriptor

    #### 每篇一句 > 千古以来要饭的没有要早饭的,知道为什么吗? #### 相关阅读 [[小家Spring]聊聊Spring中的数据转换:Converter.ConversionService ...

随机推荐

  1. RTT之ENV

    一 先安装工具git:在CMD命令行中运行git命令检验git环境变量安装成功 二 下载env工具:然后解压,打开对应的exe然后右击-setting-intergration-registor这样后 ...

  2. CAD安装失败怎样卸载CAD 2014?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  3. Murano Weekly Meeting 2016.05.24

    Meeting time: 2016.May.24 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: 1.A ...

  4. HTML--备忘点

    1.文档内的链接

  5. MySQL查询上个月数据

    SELECT * FROM order o WHERE o.payTime BETWEEN DATE_FORMAT(DATE_ADD(NOW(),INTERVAL MONTH),'%Y-%m-01') ...

  6. node.js运行环境变量配置

    -----Windows cmd---------- 1. echo %PATH%  输出Path环境变量 2.set NODE_ENV=testing 定义环境变量 3.echo %NODE_ENV ...

  7. Python is 和 == 的区别, 编码和解码

    一.is 和 == 的区别 is : 进行比较,比较的是内存地址是否一致 ==:进行比较,比较的是值是否相等 1.小数据池: 数字小数据池范围 -5~256 字符串中如果有特殊字符则他们的内存地址不一 ...

  8. Mysql慢查询 [第一篇]

    一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态slow_q ...

  9. Android 实现朋友圈有图片和视频

    最近开发比较烦,这个作为我第一篇博客吧. 效果就是图上的样子. 首先是布局文件,没什么就是一个RecycleView <android.support.v7.widget.RecyclerVie ...

  10. Mat转化为IplImage类型的方法

    Mat image_mat; IplImage imgTmp = image_mat; IplImage *img = cvCloneImage(&imgTmp);