zoukankan      html  css  js  c++  java
  • java反射操作类方法与属性

    package com.fanshe.test;
    
    public class User {
        private int age;
        private String email;
        private String username;
    
        public User() {
        }
    
        public User(int age, String email, String username) {
            this.age = age;
            this.email = email;
            this.username = username;
        }
    
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    }
    
    
    
    package com.fanshe.test;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class TsetF {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
            Class<User> clazz = (Class<User>) Class.forName("com.fanshe.test.User");
            Field username = clazz.getDeclaredField("username");
            System.out.println(username.getName());
    
            /**
             * 无参构造方法声明一个实例
             */
            User user = clazz.newInstance();
            Method method = clazz.getDeclaredMethod("setUsername", String.class);
            method.invoke(user, "alex");
            System.out.println(user.getUsername());
    
            /**
             * 有参构造方法声明实例
             * 第一步:找到构造方法,第二个利用构造方法来实例对象
             */
            Constructor<User> constructor = clazz.getDeclaredConstructor(int.class,String.class,String.class);
            User u2 = constructor.newInstance(10,"wangzhilei@jd.com","MarCus");
            System.out.println(u2.getUsername());
    
            // 声明第三个实例
            User u3 = clazz.newInstance();
            Field field = clazz.getDeclaredField("age");
            field.setAccessible(true);
            field.set(u3,100);  //数据类型要保持一致
            System.out.println(u3.getAge());
    
        }
    }
    

      

  • 相关阅读:
    EXCEL每次打开文件都会出现一个空白sheet1窗口
    Python基础知识之面向对象编程
    Python基础知识之模块详解
    Python基础知识之正则表达式re模块
    Python基础知识之xml模块
    Python基础知识之json&pickle模块
    Python基础知识之装饰器
    VUE-02
    VUE
    虚拟环境的搭建
  • 原文地址:https://www.cnblogs.com/leigepython/p/9982614.html
Copyright © 2011-2022 走看看