java反射-属性赋值取值

简介: java反射-属性赋值取值

一、基础类

public class UserInfo {
 
    private long id;
    private String username;
    private String password;
 
    public UserInfo() {
        System.out.println("public UserInfo()");
    }
 
    public UserInfo(long id) {
        super();
        this.id = id;
    }
 
    public UserInfo(long id, String username) {
        super();
        this.id = id;
        this.username = username;
    }
 
    public UserInfo(long id, String username, String password) {
        super();
        this.id = id;
        this.username = username;
        this.password = password;
        System.out.println("public UserInfo(long id, String username, String password)");
        System.out.println(id + " " + username + " " + password);
 
    }
 
    public long getId() {
        return id;
    }
 
    public void setId(long 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 void test() {
        System.out.println("public void test1()");
    }
 
    public void test(String address) {
        System.out.println("public void test2(String address) address=" + address);
    }
 
    public String test(int age) {
        System.out.println("public String test3(int age) age=" + age);
        return "我是返回值";
    }
}

二、属性赋值、取值

 public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
        Class<UserInfo> userInfoClass = UserInfo.class;
        //1、使用Class对象调用无参构造方法
        //UserInfo userInfo = userInfoClass.newInstance(); 已废弃,不推荐使用
        UserInfo userInfo = userInfoClass.getDeclaredConstructor().newInstance();
        //属性名称
        String fieldName = "username";
        //属性值
        String fieldValue = "张三";
        //获取类的UserInfo的username属性的对象
        Field fieldObject = userInfoClass.getDeclaredField(fieldName);
        System.out.println(fieldObject.getName());
        //反射的对象在使用时应该取消 Java 语言访问检查
        fieldObject.setAccessible(true);
        //设置属性值
        fieldObject.set(userInfo, fieldValue);
        //获取对象的属性值
        System.out.println(userInfo.getUsername());
        //根据对象,获取属性的值
        System.out.println(fieldObject.get(userInfo));
    }
public UserInfo()
username
张三
张三
目录
相关文章
|
1天前
|
存储 缓存 Java
探索 Java 中 `Class.java` 的属性与方法
探索 Java 中 `Class.java` 的属性与方法
8 1
|
3天前
|
Java
JAVA单例模式-双重检验锁(防止反射、序列化多个)
JAVA单例模式-双重检验锁(防止反射、序列化多个)
12 1
|
4天前
|
Java 测试技术
Java反射之Method的invoke方法详解
Java反射之Method的invoke方法详解
|
7天前
|
安全 Java
Java反射的使用
Java反射的使用
|
1天前
|
Java API
java之反射机制
java之反射机制
|
1天前
|
Java 关系型数据库 MySQL
Java反射的常见用法
Java反射的常见用法
|
3天前
|
Java Maven
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
7 0
|
3天前
|
Java
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
java反射-动态调用方法(无参无返回值、有参无返回值、有参有返回值)
5 0
|
3天前
|
Java 机器人 程序员
Java中的反射编程实用指南
Java中的反射编程实用指南
|
3天前
|
Java
java反射-使用Class对象创建对象
java反射-使用Class对象创建对象
5 0