zoukankan      html  css  js  c++  java
  • 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());
  • 相关阅读:
    动态演示面动成体:圆柱、圆锥、圆台、球——GeoGebra制作教程
    修改图形颜色
    圆柱面的指令生成之一--------参数方程
    使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神
    使用 EPPlus 封装的 excel 表格导入功能 Func--小试牛刀
    markdown画图
    redis cluster集群搭建
    IQueryable的简单封装
    为 linux 换源
    解决dotnet-Angular的跨域(cors)问题
  • 原文地址:https://www.cnblogs.com/jeremy-blog/p/4849411.html
Copyright © 2011-2022 走看看