zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    Reverse linked list
    Implement Queue by Two Stacks
    Min Stack
    Search a 2D Matrix
    50. Pow(x, n)
    监控hdfs的一个目录,若有新文件,spark就开始处理这个文件,可以使用spark streaming textfilestream来监控该目录
    kafka2在重启消费者以后已经提交offset回退了 什么原因(待完善)
    Hybrid Recommender Systems: Survey and Experiments
    开源实时日志分析平台
    scala为什么要清理闭包
  • 原文地址:https://www.cnblogs.com/zhaoleigege/p/5695771.html
Copyright © 2011-2022 走看看