我是一个只读方法,应该能够采取
1. Map<Date, List<X>>
或
2. Map<Date, List<Y>>
作为参数。
在这里,我有以下两个选项来定义方法。
A. private <T> List<Date> myMethod(Map<Date, List<T>> map)
B. private List<Date> myMethod(Map<Date, List<?>> map)
对我来说两者都合适,哪一个更好?
感谢。
答案 0 :(得分:5)
第一个允许您访问T
类型以备不时之需(例如,如果您需要投射某些内容以键入T
或类似内容)。对于后者,您只需声明您不会错误地List
包含哪种元素。
答案 1 :(得分:5)
来自JLS
<T> boolean addAll(Collection<T> c)
此版本足够灵活,但请注意,type参数仅在签名中使用一次。这反映了这样一个事实,即type参数不用于表示参数类型,返回类型和/或throws类型之间的任何类型的相互依赖性。 在没有这种相互依赖性的情况下,通用方法被认为是不好的风格,并且通配符是首选。