我有两个内部类和一个方法:
protected <A extends Obj1> void a(P<A> p)
{}
private static class P<Z extends Obj1>
{}
private static class Obj1
{}
它编译得很好,但是当我在Eclipse Mars 中尝试通过以这种方式赋予它第二个属性来更改方法a
的签名时
给出以下错误:
绑定不匹配:类型A不是有界的有效替代 参数&lt; Z extends Test.Obj1&gt; Test.P&lt; Z&gt;
的类型
现在我实际上有两个问题。为什么这种行为差异以及我做错了什么?
奇怪的是,当我手动修改a
时:
protected <A extends Obj1> void a(P<? extends A> p)
{}
并尝试更改先前描述的方式的签名我没有得到该错误。我有一种感觉,这可能是Java或Eclipse中的错误,但实际上并不知道从哪里开始搜索。 所以如果它有帮助我也给你他们的版本:
更新:
所以我尝试了更多不同版本的Eclipse和Java 8,但结果是一样的。