• java反射


    java在反射时候经常用到了 Field 类。

    代码:

    public class ReflectTest {//需要反射的类
      private String fname;
      private String lname;

    public ReflectTest(String fname, String lname) {
      this.fname = fname;
      this.lname = lname;
    }

    public static void main(String[] args) {
      try {
        ReflectTest rt = new ReflectTest("java", "aspectj");
        fun(rt);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }

      public static void fun(Object obj) throws Exception {
        Field[] fields = obj.getClass().getDeclaredFields();//getDeclaredFields()返回Class中所有的字段,包括私有字段;
        System.out.println("替换之前的:");
        for (Field field : fields) {
        System.out.println(field.getName() + "=" + field.get(obj));
        if (field.getType().equals(java.lang.String.class)) {//field.getType(): 获取属性声明时类型对象(返回class对象)
          field.setAccessible(true);//设置这些属性是可以访问的
          // 必须设置为 true 才可以修改成员变量
          String org = (String) field.get(obj);//获得此属性的值
          field.set(obj, org.replaceAll("a", "b"));
        }
    }
      System.out.println("替换之后的:");
        for (Field field : fields) {
        System.out.println(field.getName() + "=" + field.get(obj));
      }
    }
    }

        
            //得到一个字段  
            Field fieldY = pt1.getClass().getField("y"); //y 是变量名  
            //fieldY的值是5么?? 大错特错  
            //fieldY和pt1根本没有什么关系,你看,是pt1.getClass(),是 字节码 啊  
            //不是pt1对象身上的变量,而是类上的,要用它取某个对象上对应的值  
            //要这样  
            System.out.println(fieldY.get(pt1)); //这才是5  
  • 相关阅读:
    每周一坑WAF防护域名主节点异常+阿里远程登录不了
    SmsForwarder转发阿里云登录验证码
    python统计IP段 (基础实现版)
    每周一坑nginx日志写不到elk索引
    阿里云WAF本地验证及误拦截处理
    php 1020
    php 1017
    php 1018
    php 1015
    php 1014
  • 原文地址:https://www.cnblogs.com/zhaoleigege/p/5695771.html
Copyright © 2020-2023  润新知