当前位置: 首页 > 面试题库 >

根据类的名称测试类是否包含实例变量

曾新立
2023-03-14
问题内容

有时我需要测试哪个类声明了一些变量,如果具体类包含具有某些名称的变量,还有另一种方法可以测试该变量

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

问题答案:

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

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

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

对我来说似乎更多面向对象,不会破坏封装。

就是说,我并没有真正理解您为什么首先需要它。



 类似资料:
  • 我必须用Java实现一个日志机制。所以我使用JEE,使用RequestFilter和拦截器。我把所有这些都放在一个叫做日志记录的包中。 我的类是:请求过滤器,响应过滤器和常量 所以我的问题是。因为类名已经存在于包中,所以不记录类名可以吗? 包日志记录和重复日志记录:请求过滤日志记录,响应过滤日志记录,ConstantsLogging

  • 我有一个实体Person,它由name属性组成 我不想在一个额外的表中存储“name”...我将name标记为transient,这样它就不会存储在基础数据库中。 我想要的是将属性“name”映射到数据库中的列“first_name”和“last_name”。 例如,我可以像那样创建一个人 如何实现映射,使基础表包含两个附加列first_name和last_name,内容是从name属性获得的字符

  • 问题内容: 我有一个Java课。如何检查该类是否包含JUnit4测试的方法?我是否必须使用反射对所有方法进行迭代,还是JUnit4提供这种检查? 编辑: 由于注释不能包含代码,因此我根据以下答案放置了代码: 问题答案: 使用内置的JUnit 4类 org.junit.runners.model.FrameworkMethod 来检查方法。

  • 问题内容: Java中的Monitor是否不限制对实例变量的访问,而不仅限于对已声明为 同步 的方法或在 同步 语句中进行代码访问? 我创建了两个线程,invokes 方法,该方法声明为已 同步, 而invokes 方法,该方法未声明为已同步。两者都调用共享对象上的方法。 可以在对象的 监视器 或 锁 仍由持有者的情况下修改对象的实例变量。 Java中的监视器是否不限制对实例变量的访问,而不仅限于

  • 我对JUnit测试非常陌生,我试图理解如何测试类的实例化。 假设我有以下类,它需要一个来实例化。当然,这个玩具列表是在程序的另一部分上创建的,但是我不太清楚应该在哪里创建它,以便对进行单元测试。 应该是这样吗? 基本上,我的问题是应该在哪里以及如何创建测试依赖于创建的列表的类所需的arraylist对象。

  • 我有一个主要的“抽象”类宠物,和两个“真实”类狗和猫。当我有两个宠物的例子时,我想知道它们是否是“同一种宠物”,而不考虑它们是哪种宠物。 我试过这个 我尝试了所有评论的返回,它总是给出这样的结果: 有没有办法在主类中进行这样的测试以避免代码重复? 编辑: 多人提到它忘记了子类化部分 这可以按预期工作