添加从单个类继承的不同类的对象



我想将继承自单个类的两个不同类的对象存储在链接列表中

代码示例

class Animal {
     .....
     .....
     .....
}
class Dog  extends Animal {
     .....
     .....
     .....
}
class Snake extends Animal  {
     .....
     .....
     .....
}

现在我想做的是这样的:

Linkedlist <Animal> animalslist = new Linkedlist <>();
animalslist.push (new Dog);
animalslist.push (new Snake);

当我为我的 Android 应用程序编写这样的代码时,它成功构建,但当我运行应用程序时它崩溃了。

只是为了说明@Steamwork:下面的代码运行完美,甚至 B 类和 A 类也完全没有关系......

public class TestItMain {
  public static void main(String[] args) {
    LinkedList<Object> list = new LinkedList<Object>();
    list.add(new ClassA());     
    list.add(new ClassB());
    System.out.println(((ClassA)list.get(0)).val1);
    System.out.println(((ClassB)list.get(1)).val2);
  }
  public static class ClassA
  {
    public int val1=1;
  }
  public static class ClassB
  {
    public int val2=2;
  }
}

@geekFromPeshawar - 此示例确认您的问题与列表(或链接列表(无关。问题出在别的地方...这可能是一个问题,因为您使用push方法。它实际上将所有对象向下移动。并且每个位置的对象类可能会在每次推送后发生变化。与push一起工作必须非常小心。 恕我直言,在这种情况下,当添加的对象留在原位时add最好使用这种方法......

正如您正确指出的那样,您面临的问题是因为您正在尝试将不同的类添加到同一列表中。

通常,在 Java 中,当您创建一个能够存储某些类(例如 List<Animal> (的List时,这并不意味着狗或蛇的列表会将上述列表作为其父级:

// These two lists do not share a relation: one is not inherent of the other
List<Animal> animalList = new LinkedList<>();
List<Dog> dogList = new LinkedList<>();

但是,还是有希望的:如果你要创建另一个使用 Animal 子类的类,并最终在List中使用它,你将能够为每个List元素访问每个类的实例:

class myClass {
    Dog dog;
    Snake snake;
}
// You can then add the class
List<myClass> myList = new LinkedList<>();

此外,您可以事先为每个DogSnake设置特定数据。其中,添加到myList的每个myClass对象都将包含所有必要的数据,然后可以在以后访问这些数据。

希望这对:)有所帮助

相关内容

  • 没有找到相关文章

最新更新