gpt4 book ai didi

java - 内省(introspection)器发现不再存在的属性

转载 作者:行者123 更新时间:2023-12-01 14:45:33 27 4
gpt4 key购买 nike

我在一个我已经工作了一段时间的 Java EE 6 应用程序中依靠内省(introspection)进行 XML 处理。到目前为止,效果很好。但是,我必须重命名属性 setter 名称。问题是,Introspector.getBeanInfo(Class<?>)正在检测旧的和新的 setter ,即使在我之后

  • 停止使用 JRebel,
  • 清除了我的 Maven 存储库,
  • 吹掉 GlassFish 并安装一个新的,并且
  • 重建了我的网络应用。

此外,我确保刷新内省(introspection)器的缓存:

public class BeanUtils {
public static Map<String, Class> propertyTypes(Class beanType) throws Exception {
HashMap<String, Class> propertyTypes = new HashMap<>();
for (PropertyDescriptor descriptor : Introspector.getBeanInfo(beanType).getPropertyDescriptors()) {
propertyTypes.put(descriptor.getName(), descriptor.getPropertyType());
}
return propertyTypes;
}
// Added this to flush the introspector
static {
Introspector.flushCaches();
}
}

这是我正在反射(reflection)的类(class):

public class AdhocUnavailableTimesRequestTag
{
public AdhocUnavailableTimeRequestTag[] getAdhocUnavailableTimes()
{
return adhocUnavailableTimes;
}

public void setUnavailableTimes(AdhocUnavailableTimeRequestTag[] adhocUnavailableTimes)
{
this.adhocUnavailableTimes = adhocUnavailableTimes;
}

private AdhocUnavailableTimeRequestTag[] adhocUnavailableTimes;
}

并调用BeanUtils.propertyTypes(AdhocUnavailableTimesRequestTag.class)返回:

"adhocUnavailableTimes" => class [LAdhocUnavailableTimeRequestTag;
"class" => java.lang.Class"
"unavailableTimes" => class [LAdhocUnavailableTimeRequestTag;

什么可能导致内省(introspection)器拾取 unavailableTimes当它不再存在时?我该如何解决它?

最佳答案

这将是方法 setUnavailableTimes 的名称。您可以通过将该方法重命名为 setAdhocUnavailableTimes 来修复此问题。

关于java - 内省(introspection)器发现不再存在的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com