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());
    
        }
    }
    

      

  • 相关阅读:
    微信授权登录
    mpvue 试水的一天
    小程序请求接口统一封装到一个js文件中
    工作中vue项目前后端分离,调用后端本地接口出现跨域问题的完美解决
    百度小程序授权更好体验
    关于智能小程序网络请求封装
    vue 开发webapp 手机返回键 退出问题
    MySQL解决存入数据库和取出数据库时间格式问题
    关于小程序授权更好体验
    关于vue项目中在js中引入图片问题
  • 原文地址:https://www.cnblogs.com/leigepython/p/9982614.html
Copyright © 2011-2022 走看看