博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java反射
阅读量:6910 次
发布时间:2019-06-27

本文共 1429 字,大约阅读时间需要 4 分钟。

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  

转载于:https://www.cnblogs.com/zhaoleigege/p/5695771.html

你可能感兴趣的文章
iOS开发之--一些有用的博文和博客
查看>>
jmeter JDBC Request (查询数据库获取数据库数据) 的使用
查看>>
深入理解ajax系列第七篇——传递JSON
查看>>
Vim简明学习
查看>>
16.文件file
查看>>
PHP-FPM@year12
查看>>
Reportviewer中的函数使用——打印当前日期并格式化
查看>>
oracle用户管理
查看>>
15.Intellij中配置jdk/tomcat/maven
查看>>
GridView中实现CheckBox的全选
查看>>
home.pl 正在促销,一些域名免费(终止于2017.4.4)
查看>>
python、js 时间日期模块time
查看>>
Loadrunner监控Centos
查看>>
转:问题解决:The project cannot be built until build path errors are resolved
查看>>
Python--day25--面向对象之多态
查看>>
submit
查看>>
数据结构-----树状数组
查看>>
mac终端下svn常用命令
查看>>
C++的lambda表达式
查看>>
新手学习python(十六)封装redis
查看>>