计算机教程

当前位置:3522.com > 计算机教程 > javaweb学习总结五(内省、beanUtils工具包)

javaweb学习总结五(内省、beanUtils工具包)

来源:http://www.4sports-uk.com 作者:3522.com 时间:2019-10-06 07:44

java内省 introspector,内省introspector

属性的概念

不只是字段,而是其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());
        }
    }
}

图片 1

阻止父类的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());
        }
    }
}

 

http://www.bkjia.com/Javabc/1305239.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1305239.htmlTechArticlejava内省 introspector,内省introspector 属性的概念 不只是字段,而是其get set 方法 且该get方法有返回值的称为属性,继承Object类的getClass方法...

运行结果:

否则报错如下:

 1 @Test
 2     public void test03() throws Exception {
 3         Person p = new Person();
 4         String name = "Jack";
 5         String age = "27";
 6         String birthday = "2010-10-02";
 7         BeanUtils.setProperty(p, "name", name);
 8         BeanUtils.setProperty(p, "age", age); // 这里String类型转换为int类型
 9         BeanUtils.setProperty(p, "birthday", birthday); // 这里会报错,因为String类型自动转化仅限于8种基本类型
10         System.out.println(p.getName()   ":"   p.getAge()   ":"
11                   p.getBirthday());
12     }

图片 2

图片 3

a:获取所有的属性

1:定义javaBean

决定。

c:获取当前属性的类型

1 // 获取当前属性的类型
2     public void test3() throws Exception {
3         PropertyDescriptor pd = new PropertyDescriptor("age", Person.class);
4         System.out.println(pd.getPropertyType());
5     }

a:导包错误,导入java.util.Date,而不是java.sql.Date,否则报错,如下:

 1 @Test
 2     public void test06() throws Exception {
 3         Person p = new Person();
 4         Map<String, Object> map = new HashMap<String, Object>();
 5         String name = "Jack";
 6         String age = "27";
 7         String birthday = "2010-10-02";
 8         ConvertUtils.register(new DateLocaleConverter(), Date.class);
 9         map.put("name", name);
10         map.put("age", age);
11         map.put("birthday", birthday);
12         BeanUtils.populate(p, map);
13         System.out.println(p.getName());
14         System.out.println(p.getAge());
15         System.out.println(p.getBirthday());
16     }

4:自定义String到Date的转化器

 

图片 4

要想得到自己定义的类,可以使用getBeanInfof(Person.class,Object.class)方法,如下:

2:访问javaBean对象

转换成功!

 1 @Test
 2     // 获取所有的属性
 3     public void test1() throws Exception {
 4         // BeanInfo bi = Introspector.getBeanInfo(Person.class);
 5         BeanInfo bi = Introspector.getBeanInfo(Person.class, Object.class);
 6         PropertyDescriptor[] pds = bi.getPropertyDescriptors();
 7         for (PropertyDescriptor pd : pds) {
 8             System.out.println(pd.getName());
 9         }
10     }
1 @Test
2     // 获取所有的属性
3     public void test1() throws Exception {
4         BeanInfo bi = Introspector.getBeanInfo(Person.class);
5         PropertyDescriptor[] pds = bi.getPropertyDescriptors();
6         for (PropertyDescriptor pd : pds) {
7             System.out.println(pd.getName());
8         }
9     }
1 @Test
2     public void test02() throws Exception {
3         Person p = new Person();
4         String name = "Jack";
5         String age = "27";
6         BeanUtils.setProperty(p, "name", name);
7         BeanUtils.setProperty(p, "age", age); // 这里String类型转换为int类型
8         System.out.println(p.getName()   ":"   p.getAge());
9     }
 1 @Test
 2     public void test05() throws Exception {
 3         Person p = new Person();
 4         String name = "Jack";
 5         String age = "27";
 6         String birthday = "2010-10-02";
 7         ConvertUtils.register(new DateLocaleConverter(), Date.class); // 将转换器里定义转换方法
 8         BeanUtils.setProperty(p, "name", name);
 9         BeanUtils.setProperty(p, "age", age); // 这里String类型转换为int类型
10         BeanUtils.setProperty(p, "birthday", birthday); // 这里会报错,因为String类型自动转化仅限于8种基本类型
11         System.out.println(p.getName()   ":"   p.getAge()   ":"
12                   p.getBirthday());
13     }

2:javaBean,就是用来封装客户端请求数据,有字段、get、set方法的对象,javaBean对象的属性有getXXX方法

一:内省的概念

1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射

但是这里有几个问题:

其中age ,name是定义的成员变量,salary是getSlary()方法定义的,class是因为Person继承了Object类,

以上代码均已经验证!

6:将map里存储的key-value封装到bean里面

本文由3522.com发布于计算机教程,转载请注明出处:javaweb学习总结五(内省、beanUtils工具包)

关键词: 3522.com

上一篇:使用 NodeJS Express 开发服务端

下一篇:没有了