【发布时间】:2010-11-19 14:14:33
【问题描述】:
当我用 Java 做一些不是很花哨的事情时,我遇到了一个泛型错误,我无法理解为什么它不起作用。代码是:
package test;
import java.util.*;
public class TestClass {
public static class A extends C{}
public static class B extends C{}
public static class C{}
public static class D<T>{}
public static class E<T>{}
public static void main(String args[]){
E<D<? extends C>> a = new E<D<A>>();
E<D<? extends Object>> b = new E<D<? extends C>>();
E<D<? extends A>> c = new E<D<A>>();
E<D<? super A>> d = new E<D<A>>();
D<? extends C> e = new D<A>();
D<? extends A> f = new D<A>();
D<? extends A> g = new D<A>();
}
}
我在编译时遇到的错误是:
test/TestClass.java:11:不兼容的类型 找到:test.TestClass.E如果找到E<D<? extends C>>,那肯定会匹配E<D<? extends Object>>,对吧?还是我错过了什么?
【问题讨论】:
-
这是Java Puzzlers 下一版的好问题javapuzzlers.com
-
我相信您偶然发现了一个边缘案例。非常有趣。
-
如果你能理解它可能会有用:bit.ly/3RrNV3