Если вы можете, вы должны просто использовать интерфейс TemplateHashMapEx
, потому что у хешей FTL не всегда есть Map
-ы, а в их интерфейсе нет даже Map
(как они могуттолько ключи String
).Поэтому, даже если вы можете получить Map
из HashLiteral.SequenceHash
, что если вы получите какой-то другой тип хэша в качестве параметра?
Если вам действительно нужен java.util.Map
интерфейс для этого хэша, вам лучше спроситьObjectWraper
(Environment.getCurrentEvironment().getObjectWrapper()
), чтобы предоставить один для вас.Если ваш ObjectWrapper
расширяет BeansWrapper
(и в 99,9% приложений он делает), вы можете позвонить на него BeansWrapper.unwrap(theHashParam, Map.class)
.
Как примечание, бедный BeansWrapper
столкнется с той же ситуациейкак ты сделал;он не может получить доступ к Map
позади.Однако он не будет создавать новый Map
, просто поместите хэш в интерфейс Map
.Будет ли это все еще неэффективно, это проблема разработчиков FreeMarker, и ее следует исправить там.