gpt4 book ai didi

java - 在转换方法中从 Map 接收带有 String 键的对象

转载 作者:行者123 更新时间:2023-12-01 12:47:18 25 4
gpt4 key购买 nike

我对这些代码行有一个奇怪的问题(for循环仅用于我的调试):

  protected final List<Long> extractIdFromResult(Map<String, Object> pResult, String pKey) {
for (String key : pResult.keySet()) {
Object o = pResult.get(key);
if (null == o){
System.out.println("is null");
}
}
return new SqlArrayExtractor<Long>(pResult.get(pKey)).extract(new Transformer() {
@Override
public Long transform(Object pInput) {
return Long.valueOf(((BigDecimal) pInput).longValue());
}
});
}

调用该方法从 StoredProcedure 中提取 id(Longs)。is null 永远不会写入控制台,我也不会输入 if (null == o){ 因为 o 不为 null。尽管如此,如果我输入 public Long transform(Object pInput) pInput 始终为 null!

怎么会发生这种事?该行效果很好:Object o = pResult.get(key);

感谢您的帮助

斯特凡

最佳答案

pKey 可能在 map 中不可用,因此运行以下代码来检查它是否可用。循环永远不会返回 null,因为您正在迭代从映射中获取的键集。

protected final List<Long> extractIdFromResult(Map<String, Object> pResult, String pKey) {
System.out.println("is pKey available in map "+pResult.get(pKey));
// There is a chance that the pKey can be something which is not available in the map.
return new SqlArrayExtractor<Long>(pResult.get(pKey)).extract(new Transformer() {
@Override
public Long transform(Object pInput) {
return Long.valueOf(((BigDecimal) pInput).longValue());
}
});
}

关于java - 在转换方法中从 Map 接收带有 String 键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573492/

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