有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

重写从外部类继承泛型的内部类时,eclipse Java出现“名称冲突”和“构造函数未定义”错误

我最近在一个项目中升级了eclipse和java版本,出现了一些错误。 我试图重现,发现以下设置导致Eclipse Oxigen中出现错误。3a(4.7.3a)使用Java 1.8,而eclipse 3.7.2和Java 1.7也同样适用

TestSomeObject。爪哇:

package a;
public class TestSomeObject
{
}

测试通用。爪哇:

package a;
public class TestGeneric<T>
{
  T element;

  protected class InnerGeneric
  {
     T innerElement;

     public InnerGeneric() { }
  }
}

泰斯塔。爪哇:

package a;

public class TestA extends TestGeneric<TestSomeObject>
{
  public TestA(String a, String b) {}

  public InnerA someMethod(String some, InnerGeneric inner)
  {
     return new InnerA(some, inner);
  }

  protected class InnerA
  {
     public InnerA(String a, InnerGeneric b) {  }
  }
}

测试B。爪哇

package a;
import a.TestA;

public class TestB extends TestA
{
  public TestB(String a, String b){
     super(a,b);
  }

  public InnerA someMethod(String some, InnerGeneric inner)
  {
     return new InnerB(some, inner);
  }

  protected class InnerB extends InnerA
  {
     public InnerB(String a, InnerGeneric b)
     {
        super(a, b);
     }
  }
}

在B类测试中,我发现以下编译错误:

  1. someMethod:Description Resource Path Location Type Name clash: The method someMethod(String, TestGeneric<TestSomeObject>.InnerGeneric) of type TestB has the same erasure as someMethod(String, TestGeneric<TestSomeObject>.InnerGeneric) of type TestA but does not override it TestB.java line 13 Java Problem
  2. 调用super(a,b)时:Description Resource Path Location Type The constructor TestA.InnerA(String, TestGeneric<TestSomeObject>.InnerGeneric) is undefined TestB.java line 22在这里输入代码Java Problem

在eclipse版本3.7.2和Java1.7中,这是可行的

为什么?我能做些什么来清除错误


共 (0) 个答案