Java反射

之前接触不多,现在项目用到了,就回顾一下,给自己以后做一个参考吧

一:建一个自己要访问的类

  

二:编写util 通过java反射访问Users中的属性和方法

   package com.demo.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectTest {
     //其实ByuNewUsers可以专门提出来做一个util,这样需要访问那个方法只需要传值就行(可以自行修改)
     public static Users ByuNewUsers() throws ClassNotFoundException, NoSuchMethodException, SecurityException{
      
      Users users=null;   
      try {
          //①通过类装载器获取Users类对象
          ClassLoader loader=Thread.currentThread().getContextClassLoader();
          Class clazz=loader.loadClass("com.demo.test.Users");
          
          //②获取类的默认构造器对象并通过它实例化Users
          Constructor cons=clazz.getDeclaredConstructor((Class[])null);
          users=(Users) cons.newInstance();
          
          //③通过反射方法设置属性
          Method setUsersname=clazz.getMethod("setUsersname", String.class);
          setUsersname.invoke(users, "zhangsan");
          Method setPassword=clazz.getMethod("setPassword", String.class);
          setPassword.invoke(users, "123456");
          
      } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
      
      return users;
        
    }

        

    public static void main(String[] args) {
        
         try {
            ReflectTest.ByuNewUsers().show();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}


三:输出结果

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值