• javase---Java反射操作


    1首先认识什么叫反射

      正常的情况下,我们操作一个对象,则必须找到这个对象对应的类,然后实例化,然后再做各种操作,
    
       反射的则通过一个对象获取对应的类,然后实例化,然后做各种操作,

    2反射的操作步骤

      I获取到Class类

      ①Object.class

      System.out.println(Bean.class.getName());

      ②object.class

    Bean bean=new Bean();
    System.out.println(bean.getClass().getName());

      ③Class.forName("全类名")

    Class<?> cls = Class.forName(bean.getClass().getName());
    System.out.println(cls.getName());

      2实例化Class.newInstance();

    Class<?> cls = Class.forName(bean.getClass().getName());
    System.out.println(cls.getName());
    Bean bean= (Bean)cls.newInstance();
    System.out.println(newInstance.sayHello("test"));

      3取得对应的方法并操作

      ①获取方法

    //1---先获取到方法,而且也要把对应的参数类型写上
    Method method = cls.getMethod("sayHello",String.class);
            

      ②执行方法

    //2执行取到的方法,并传递参数
    Object invoke =(String)method.invoke(cls.newInstance(), "test2");
    //3获取返回值
    System.out.println(invoke);

      4取得对应属性并操作

      ①获取属性

    //操作属性
    Field fieldname=cls.getDeclaredField("name");

         ②操作属性

    fieldname.setAccessible(true);
    fieldname.set(bean, "jeremy");
    System.out.println(bean.getName());
    //因为要设置属性可见,也就是没权限言,所以一般不建议使用

      使用setter和getter方法来操作

    //操作属性
    Method setMethod=cls.getMethod("setName", String.class);
    setMethod.invoke(bean, "ssss");
    System.out.println(bean.getName());
  • 相关阅读:
    关于VS下的应用程序出现0xc000007b的问题以及OpenCV相关的0xc000007b问题
    彻底解决DZ大附件上传问题
    基于Red5的视频直播平台
    .htaccess重写URL讲解
    了解Linux实时内核
    Linux操作系统实时性分析
    5分钟教程:如何通过UART获得root权限
    记一次有惊无险的Linux数据恢复过程
    11款最棒的Linux数据恢复工具
    Xamarin.Android开发实践(六)
  • 原文地址:https://www.cnblogs.com/jeremy-blog/p/4849411.html
Copyright © 2020-2023  润新知