Eclipse中的方法签名更改会产生错误

时间:2016-11-04 09:33:08

标签: java eclipse generics java-8 eclipse-mars

我有两个内部类和一个方法:

protected <A extends Obj1> void a(P<A> p)
{}

private static class P<Z extends Obj1>
{}

private static class Obj1
{}

它编译得很好,但是当我在Eclipse Mars 中尝试通过以这种方式赋予它第二个属性来更改方法a的签名时

enter image description here

给出以下错误:

  

绑定不匹配:类型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 Mars.2(4.5.2)
  • Java 1.8.0.77

更新:

所以我尝试了更多不同版本的Eclipse和Java 8,但结果是一样的。

0 个答案:

没有答案