测试如果一个类包含基于其名称的实例变量测试如果一个类包含基于其名称的实例变量(Test if a c

2019-05-12 11:38发布

有时候,我需要测试哪一个类已经宣布了一些变量(S),有另一种方式如何测试,如果具体类包含一些变量名

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

Answer 1:

如果我理解正确的话,您使用此代码在超测试一个子类有testVariable场。

你为什么不只需添加这样的方法?

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

似乎更OO对我来说,不破坏封装。

这么说,我还没有真正理解为什么你需要这个摆在首位。



Answer 2:

类有田,而不是局部变量。

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

你并不需要查找的字段的值,如果你没有得到一个异常的领域是存在的。



文章来源: Test if a class contains an instance variable based on its name
标签: java class