gpt4 book ai didi

java - 从 ((HashLiteral.SequenceHash) (args.get(1))).keyMap 获取 HashMap

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

在我的模板方法(使用 TemplateMethodModelEx 实现)中,参数之一的类型为 HashLiteral.SequenceHash。但是,此类是私有(private)的,我无法直接从中获取 map 。唯一可访问的方法是 TemplateHashModelEx 的方法 - keys()values()

我简直不敢相信获取 map 的唯一方法是迭代keys()values()的结果来重建它。还有其他办法吗?

最佳答案

如果可以的话,您应该只使用 TemplateHashMapEx 接口(interface),因为 FTL 哈希值并不总是后面有 Map-s,而且它们甚至不是 Map-s 在他们的界面中(就像他们只能有String键)。因此,即使您可以从 HashLiteral.SequenceHash 中获取 Map,如果您获取其他类型的哈希作为参数怎么办?

如果您确实需要该哈希的 java.util.Map 接口(interface),您最好询问 ObjectWraper (Environment.getCurrentEvironment().getObjectWrapper()) 为您提供一个。如果您的 ObjectWrapper 扩展了 BeansWrapper(并且在 99.9% 的应用程序中都是如此),您可以调用 BeansWrapper.unwrap(theHashParam, Map.class) 就它了。

顺便说一句,可怜的 BeansWrapper 将面临与您相同的情况;它无法访问后面的Map。但是,它不会构建新的 Map,只是将哈希包装到 Map 接口(interface)中。是否仍然效率低下,这是 FreeMarker 维护者的问题,应该在那里修复。

关于java - 从 ((HashLiteral.SequenceHash) (args.get(1))).keyMap 获取 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558286/

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