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  
  • 相关阅读:
    如果获取 上传域的文件名
    更改织梦后台广告
    html5 让IE6,7支持HTML5语义化标签的文件
    如何获取选中的复选框
    手机下的ev.pageX无效
    Ajax
    列出远程git的全部分支
    扫描局域网中Gogs服务器(ruby)
    Xcode删除无用的Symbols信息
    Docker
  • 原文地址:https://www.cnblogs.com/zhaoleigege/p/5695771.html
Copyright © 2011-2022 走看看