Java——JavaBean的属性和成员变量区别(BeanUtils工具类中操作对象)

首先,我们先看看什么是JavaBean:

1. JavaBean:标准的Java类

  1. 类必须被public修饰
  2. 必须提供空参的构造器
  3. 成员变量必须使用private修饰
  4.  提供公共setter和getter方法

成员变量和属性的区别:

成员变量:成员变量是定义在类里面的,是类中的属性;

属性:setter和getter方法截取后的产物(属性大多数和成员变量是一样的,也可以不一样) 例如:getUsername() --> Username--> username

注意:在许多框架配置文件中都是对于属性进行操作,而非JavaBean中的成员变量。

 

工程结构:

Java——JavaBean的属性和成员变量区别(BeanUtils工具类中操作对象)_第1张图片

1.创建lib文件夹,复制两个jar包,commons-beanutils-1.8.0.jar;commons-logging-1.2.jar

2.User

package com.company;

public class User {
    private int id;
    private String username;
    private String password;
    private String gender;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return gender;
    }

    public void setSex(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

 

 

分析:

成员变量:id, username, password, gender(与属性不同)

属性:id, username, password, sex(与成员变量不同) 

 

BeanUtilsTest.java

package com.company;

import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;

import java.lang.reflect.InvocationTargetException;

public class BeanUtilsTest {
    @Test
    public void test(){
        User user = new User();
        try {
            BeanUtils.setProperty(user, "gender", "male");
            System.out.println("gender..." + user);
            BeanUtils.setProperty(user, "sex", "female");
            System.out.println("sex......" + user);
            System.out.println("-----------------");
            String gender2 = BeanUtils.getProperty(user, "sex");
            System.out.println("sex......" + gender2);
//            String gender1 = BeanUtils.getProperty(user, "gender");
//            System.out.println("gender......" + gender1);//Error, NoSuchMethodException
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }


    }
}

运行结果:


gender...User{id=0, username='null', password='null', gender='null'}
sex......User{id=0, username='null', password='null', gender='female'}
-----------------
sex......female

Process finished with exit code 0

结论:

注意:在许多框架配置文件中都是对于属性进行操作,而非JavaBean中的成员变量。

你可能感兴趣的:(2.Java编程)