问题场景:本地环境使用反射获取成员变量时测试正常,但将分支部署在泳道上发现反射多出一个属性值,value 为 $jacocodata
原因分析:部署test环境时候,maven集成了jacoco来统计单元测试的代码覆盖率。才会多一个 $jacocoData
解决方案:使用field 的 isSynthetic()方法做一次判断
if (f.isSynthetic()) {
continue;
}
方法解释:
/**
* Returns {@code true} if this field is a synthetic
* field; returns {@code false} otherwise.
*
* @return true if and only if this field is a synthetic
* field as defined by the Java Language Specification.
* 当且仅当此字段是Java语言规范定义的 合成字段 时,才返回true
* @since 1.5
*/
public boolean isSynthetic() {
return Modifier.isSynthetic(getModifiers());
}