java反射

本文介绍了Java中通过反射获取和操作对象的多种方式,包括使用`getClass()`、`Class.forName()`、`getConstructor()`和`getMethod()`等方法。此外,还详细讲解了如何调用构造方法创建实例、访问和修改成员变量以及执行方法。反射在Java编程中提供了强大的动态操作类和对象的能力。
摘要由CSDN通过智能技术生成

 

 获得对象的几种方法


        Test test= new Test();
       
        //通过对象获得
        Class t1 = people.getClass();

        

        //通过forname
        //使用Class类中的forName()静态方法(最安全,性能最好)即:Class.forName(“类的全路径”)    
        Class t2 = Class.forname("com.jopo.Test");


        //通过类名.Class
        Class t3 = test.Class;


        //通过构造方法   ---- 确保实体类有无参无,参构造方法
        //getConstructor--获取构造方法对象---------有参数传参,无参数不写
        Constructor constructor = t1.getConstructor(String.class);
        Object newins = constructor.newInstance("王五");
        System.out.println(newins);



        //调用成员方法
         //getMethod(); 第一个参数"方法名"  , 有参写参数类型,无参不写
         Method test0 = t1.getMethod("test",String.class);

            
         //invoke() 开启调用方法 参数1是对象,2需要传递的参数
         test0.invoke(new Test(),"吃啥");
        

        




  •  比较常用重要的标红了,其他看一下了解就好

  • .getPackage().getName()//包名
  • .getSimpleName()//类名
  • .getName()//完整类名
  •  
  • //获取成员变量定义信息
  • getFields()//获取所有公开的成员变量,包括继承变量
  • getDeclaredFields()//获取本类定义的成员变量,包括私有,但不包括继承的变量
  • getField(变量名)
  • getDeclaredField(变量名)
  •  
  • //获取构造方法定义信息

  • getConstructor(参数类型列表)     //获取公开的构造方法       
  • getConstructors()              //获取所有的公开的构造方法
  • getDeclaredConstructor(int.class,String.class)    //获取所有的构造方法
  • getDeclaredConstructors()     //获取所有的构造方法,包括私有
  •  
  • //获取方法定义信息

  • getMethod("方法名",参数类型列表)
  • getMethods()        //获取所有可见的方法,包括继承的方法
  • getDeclaredMethod("方法名",int.class,String.class)
  • getDeclaredMethods()//获取本类定义的的方法,包括私有,不包括继承的方法
  •  
  • //反射新建实例
  • class.newInstance();//执行无参构造创建对象
  • class.newInstance(参数,"参数");//执行有参构造创建对象
  •  
  • //反射调用成员变量
  • clazz.getDeclaredField(变量名);//获取变量
  • class.setAccessible(true);     //使私有成员允许访问   (暴力反射)
  • f.set(实例,值);//为指定实例的变量赋值,静态变量,第一参数给null
  • f.get(实例);//访问指定实例变量的值,静态变量,第一参数给null
  •  
  • //反射调用成员方法
  • Method m = Class.getDeclaredMethod(方法名,参数类型列表);
  • m.invoke(实例,参数数据);//让指定实例来执行该方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一剑封喉の

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值