在Immutables中强制执行特定的Map实现

时间:2017-07-24 18:43:21

标签: java dictionary hashmap linkedhashmap immutables-library

我正在使用Immutables Java库,如何强制执行特定的地图实现,而不必使用特定的引用?

Date

如果我使用上面的代码,则具体@Immutable public interface ConfigIF { Map<String, String> getOptions(); } Map

LinkedHashMap

如果我使用上面的代码,引用和实现都是@Immutable public interface ConfigIF { TreeMap<String, String> getOptions(); }

有没有办法指定TreeMap作为参考,但强制Map作为具体类型?

1 个答案:

答案 0 :(得分:1)

绝对不是 - 它应该被禁止(也就是说:作为用户改变它没有给你选项)。这不是特定于您的库,但通常返回Map代替TreeMap的任何代码都会让我们说。

另一方面,如果您返回Map用户,则不希望在其上调用ceilingEntry(可在TreeMap中找到,但不在Map中。通过参考演员。

java-8通过它Collectors.toXXX做同样的事情。例如Collectors.toList明确说:

  

对返回的List的类型,可变性,可序列化或线程安全性没有任何保证。

这意味着他们可以返回他们认为最合适的任何内容。