【发布时间】:2014-10-01 14:47:36
【问题描述】:
这个问题是关于 Java 中的泛型、类型安全和 Collection 类:
正如标题所说:我有一个返回集合的方法SortedMap<String,String>,我从methodStrStr() 中检索它作为返回值。假设我从methodStrSer() 调用此方法,它只需要传递检索到的地图,但必须返回SortedMap<String,Serializable>。
什么是优雅的非计算成本高的方法?
如果没有泛型,我只会返回原始地图,因为 String 是 Serializable。但是我发现如果SortedMap 的底层实现特定于String 对象并且如果我想添加不同类型的对象(例如Boolean 这也是@)导致错误,我可能会在运行时遇到麻烦987654330@ 但不是String。所以我知道编译器不允许将SortedMap<String,String> 作为SortedMap<String,Serializable> 返回是有道理的。
但是,我的问题仍然存在。是否有一种可接受的方式将原始地图类型“转换”为目标类型?
【问题讨论】:
-
也许您可以将方法签名更改为返回/接受
SortedMap<String, ? extends Serializable>?
标签: java generics collections casting