Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试类是否包含基于其名称的实例变量_Java_Class - Fatal编程技术网

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

Java 测试类是否包含基于其名称的实例变量,java,class,Java,Class,有时我需要测试哪个类声明了某个变量,如果具体类包含具有某个名称的变量,是否有其他方法来测试该变量 try { testLocalVariable = (String) (this.getClass().getDeclaredField("testVariable").get(this)); } catch (NoSuchFieldException ex) { } catch (SecurityException ex) { } catch (IllegalArgumentExceptio

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

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

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

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


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

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

为什么不简单地添加这样一个方法呢

 /**
  * Returns true if the object declares a testVariable field, false otherwise. Subclasses should
  * override this method
  */
protected boolean hasTestVariableField() {
    return false;
}
对我来说似乎更像是OO,不会破坏封装


也就是说,我还不太明白为什么您首先需要它。

您能否提供一些关于您试图解决的潜在问题的背景/背景信息,而不是您试图如何解决它?另外,您是在寻找是否存在具有某种名称和类型的成员字段,还是也要检查某个实例的相等性?您所描述的方法基本上就是这样做的。然而,这种情况听起来有点可疑。你可以有正当的理由去做你正在做的事情,但是10次中有9次这种模式是由于糟糕的OO设计造成的。你可以这样做。别忘了使用getField()或递归检查超类。感谢Field…,如果存在,没有问题集/get/check,我的问题是(在Java中)是否有其他方法,但我只需要测试字符串中的值:-)数据存储(last knows and Composite…)在数据库中,对于调试,我真的不想在类之间跳来跳去(虚空…不管什么…),然后我写了一些短文,我忘了回答“为什么不简单地添加一个这样的方法?”因为我需要set/get value:-)