Java无法访问子类重新定义的方法中的顶级属性

Ste*_*ess 5 java generics inheritance

我的顶级课程就像魅力一样:

public class TestA<E extends Test>
{
      List<Vector<E>> list;
      String name, location;

      TestA(String name, String location)
      {
            this.name = name;
            this.location = location;
            list = new ArrayList<Vector<E>>();
      }

      void populate(Test[] arr)
      {
            for(Vector<E> vk : list)
            {
                  // Code here...
            }
      }

}     

class OrderedTest<E extends Test> extends TestA {

      OrderedTest(String name, String location)
      {
            super(name, location);
      }

      void populate(Test[] arr)
      {
            for(Vector<E> vk : list) // ERROR: Cannot convert from element Object to Vector<E>
            {
                  // Code here... 
            }
      }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的子类中扩展populate()时,我基本上只想在这里使用相同的方法我想要订购的东西,所以我会在快速方法中拉出每个Vector,但除了以下之外我不会遇到任何其他问题: // ERROR: Cannot convert from element Object to

编辑:我应该为TestA实现Iterator吗?

Pat*_*han 10

在编码时,"E"作为通用参数的两种用法是独立的并且是断开的.Vector<E>在一个类中并不意味着在另一个类中Vector<E>.

将子类声明更改为:

class OrderedTest<E extends Test> extends TestA<E>
Run Code Online (Sandbox Code Playgroud)

超类声明中的E与OrderedTest中的E相同.