【问题标题】:Making an ArrayList that contains the object and its' extension制作一个包含对象及其扩展名的 ArrayList
【发布时间】:2023-03-27 20:20:01
【问题描述】:

所以基本上我创建了两个类“public class A”和“public class B extends A”。我想创建一个包含两个对象并能够访问它们的两个方法的 ArrayList。这可能吗?我该怎么做?

【问题讨论】:

  • 你有一个 Animal 和一个 Dog(这是一个动物)类,你想要一个 arraylist 来容纳它们。 arraylist 的类型应该是什么? AnimalDog ?最好不要给你一个实际的答案。
  • This 可能会回答您的问题。

标签: java object methods arraylist


【解决方案1】:

ArrayList<B> 不会保存 A 类型的对象,因此无法正常工作。

ArrayList<? extends A> 也不起作用。编译器不知道它到底是A(或A 本身)的哪个子类型,因此它不允许使用add 方法添加除null 之外的任何内容。

通常你能做的最好的就是使用ArrayList<A>

A 中可能定义了一些方法,但B 中没有定义。这里B 只是继承了A 方法,可以使用A 引用来调用。

AB 中可能都定义了一些方法。这里B 覆盖A 的方法。多态性表示B的方法会在运行时类型为B的对象上调用。

可能存在仅在B 中定义的方法。使用A 引用它们是不可访问的。但是在运行时你可以用instanceof检查类型:

for (A a : arrayList)
{
   if (a instanceof B)
   {
      B b = (B) a;
      b.methodSpecificToB();
   }
}

【讨论】:

    【解决方案2】:
    ArrayList<A> myArray;
    

    此数组列表将包含 A 类型和 B 类型的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2014-10-13
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      相关资源
      最近更新 更多