【发布时间】:2010-11-10 22:41:30
【问题描述】:
示例 A
研究以下sn-p:
public class ExampleA {
static class Pair<F,S> { }
static <F,S> Pair<F,S> anyPair() { return null; }
static <F,S> void process(Pair<F,S> p1, Pair<F,S> p2) { return; }
public static void main(String[] args) {
Pair<String,Integer> p = anyPair();
process(p, anyPair()); // doesn't compile
}
}
有人能解释一下为什么类型推断适用于局部变量p 的赋值,但不适用于process 的第二个实际参数吗?
示例 B
这也许更容易理解:
public class ExampleB {
public static <E> void process(Set<E> s1, Set<E> s2) { return; }
public static void main(String[] args) {
process(new HashSet<String>(), Collections.emptySet()); // doesn't compile
}
}
同样的问题:为什么不编译?
我希望 Collections.emptySet() 只适用于 ANY 参数化的 Set 类型。
【问题讨论】:
-
再次好,多基因润滑剂 :)
-
好消息!这些示例现在可以在 Java 8 中编译。也许目标类型可以节省时间?
标签: java generics type-inference