测试类是否包含基于其名称的实例变量

时间:2011-07-08 20:15:39

标签: java class

有时我需要测试哪个类声明了一些变量,是否有其他方法如何测试,如果具体类包含具有某个名称的变量

try {
   testLocalVariable = (String) (this.getClass().getDeclaredField("testVariable").get(this));
} catch (NoSuchFieldException ex) {
} catch (SecurityException ex) {
} catch (IllegalArgumentException ex) {
} catch (IllegalAccessException ex) {
}

2 个答案:

答案 0 :(得分:2)

类有字段,而不是局部变量。

您可以使用getDeclaredField(),但这不会找到超类声明的字段。

您不需要查找字段值,如果没有异常,则字段就在那里。

答案 1 :(得分:2)

如果我理解正确,您可以在超类中使用此代码来测试子类是否具有testVariable字段。

为什么不简单地添加这样的方法?

 /**
  * Returns true if the object declares a testVariable field, false otherwise. Subclasses should
  * override this method
  */
protected boolean hasTestVariableField() {
    return false;
}

对我来说似乎更多的OO,并没有打破封装。

那就是说,我真的不明白为什么你首先需要这个。