目录
3.将一行文本 ---> 转为Map--->调用方法 makeObject(date, clazz)转为User对象输出
一.设置一个工具类,利用反射设置两个获取值和设置值的方法
1.获取一个对象某个属性的值
public static Object getProperty(Object obj, String fieldName);
步骤:
{1}获取对象的字节码
{2}获取字段对象
{3}设置其可访问的权限
{4}获取字段的值
// {1}获取一个对象某个属性的值..
public static Object getProperty(Object obj, String fieldName) throws NoSuchFieldException {
// {1}获取对象的字节码。
Class class1 = obj.getClass();
// {2}获取字段对象。
Field f1 = class1.getDeclaredField(fieldName);
// {3}设置其可访问的权限。
f1.setAccessible(true);
Object object = null;
try {
// {4}获取字段的值。
// 格式: [字段].get( 主调对象 );
object = f1.get(obj);
} catch (IllegalArgumentException | IllegalAccessException e) {
// {ps}这些异常不太会发生, 在这里直接处理。
e.printStackTrace();
}
return object;
}
2.设置一个对象某个属性的值
public static void setProperty(Object obj, String fieldName, String value);
步骤:
{1}获取对象的字节码
{2}获取字段对象
{3}设置其可访问的权限
{4}设置字段的值
// {2}设置一个对象某个属性的值..
public static void setProperty(Object obj, String fieldName, String value) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
// {1}获取对象的字节码。
Class class1 = obj.getClass();
// {2}获取字段对象。
Field f1 = class1.getDeclaredField(fieldName);
// {3}设置其可访问的权限。
f1.setAccessible(true);
f1.set(obj, value);
3.测试1:获取属性的值
package com.gongsi.cn.test2;
public class User {
private String username;
private String password;
private String address;
private String no;
private String sex;
private int age;
private double weight;
private String createDate;
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", address=" + address + ", no=" + no
+ ", sex=" + sex + ", age=" + age + ", weight=" + weight + ", createDate=" + createDate + &