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());
  • 相关阅读:
    git 同步远程分支
    git tag 打标签
    EJS 语法
    从零开始制作 Hexo 主题
    博客灵感
    java编译做了哪些事?
    java+内存分配及变量存储位置的区别[转]
    用android模拟器Genymotion定位元素
    利用securecrt在linux与windows之间传输文件
    eclipse引入tomcat
  • 原文地址:https://www.cnblogs.com/jeremy-blog/p/4849411.html
Copyright © 2011-2022 走看看