【发布时间】:2015-03-16 00:40:58
【问题描述】:
考虑下面的代码
class MyClass {
public MyClass(Map<String, String> m) {
System.out.println("map");
}
public MyClass(SortedMap<String, String> m) {
System.out.println("sortedmap");
}
}
public class Test {
public <T extends Map<String,String>> Test(T t) {
new MyClass(t);
}
public static void main(String[] args) {
new Test(new TreeMap<String,String>());
}
}
它打印map。为什么 T 被推导出为 Map 而不是 public <T extends Map<String, String>> Test(T t) 中的 SortedMap ?有没有办法改变这种行为,以便为MyClass 使用最具体的构造函数?
【问题讨论】: