Java反射访问私有变量和私有方法

文章作者 100test 发表时间 2011:03:17 21:06:39
来源 100Test.Com百考试题网


  引言

  对于软件开发人员来说,单元测试是一项必不可少的工作。它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在。但是,在写单元测试的过程中,开发人员经常要访问类的一些非公有的成员变量或方法,这给测试工作带来了很大的困扰。本文总结了访问类的非公有成员变量或方法的四种途径,以方便测试人员在需要访问类非公有成员变量或方法时进行选择。

  尽管有很多经验丰富的程序员认为不应该提倡访问类的私有成员变量或方法,因为这样做违反了 Java 语言封装性的基本规则。然而,在实际测试中被测试的对象千奇百怪,为了有效快速的进行单元测试,有时我们不得不违反一些这样或那样的规则。本文只讨论如何访问类的非公有成员变量或方法,至于是否应该在开发测试中这样做,则留给读者自己根据实际情况去判断和选择。

  方法一:修改访问权限修饰符

  先介绍最简单也是最直接的方法,就是利用 Java 语言自身的特性,达到访问非公有成员的目的。说白了就是直接将 private 和 protected 关键字改为 public 或者直接删除。我们建议直接删除,因为在 Java 语言定义中,缺省访问修饰符是包可见的。这样做之后,我们可以另建一个源码目录 —— test 目录(多数 IDE 支持这么做,如 Eclipse 和 JBuilder),然后将测试类放到 test 目录相同包下,从而达到访问待测类的成员变量和方法的目的。此时,在其它包的代码依然不能访问这些变量或方法,在一定程度上保障了程序的封装性。

  下面的代码示例展示了这一方法。

  清单 1. 原始待测类 A 代码

  public class A {


相关文章


Java属性文件编码问题
直接用java命令行动态生成jpg文件
关于Java权限控制算法
Java中调用本地代码
Java反射访问私有变量和私有方法
Java图像的裁剪 缩放
Java对话框获取目录、文件路径
2011年计算机二级考试JAVA知识点整理(82)
2011年计算机二级考试JAVA知识点整理(81)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛