oldList.addAll(newList)还会从newList继承方法吗?

时间:2015-02-03 08:51:32

标签: java list

public class CustomVO1 {
   boolean primary;

   public boolean isPrimary() {
      return primary;
   }

   public void setPrimary(boolean primary) {
      this.primary = primary;
   }

}


public class CustomVO2 extends CustomVO1{
   boolean primary;

   public boolean getPrimary() {
      return primary;
   }

   public void setPrimary(boolean primary) {
      this.primary = primary;
   }

}

public class TestSample {

    List CustomVO1List = new ArrayList();
    List modifiedList = new ArrayList();

    CustomVO1List.clear();
    CustomVO1List.addAll(CustomVO1List);
}

2 个答案:

答案 0 :(得分:0)

不,addAll()不会继承任何方法。它只是将列表项从一个列表追加到另一个列表中。

阅读List#addAll()的{​​{3}}:

  

将指定集合中的所有元素按指定集合的​​迭代器(可选操作)返回的顺序附加到此列表的末尾。如果在操作正在进行时修改指定的集合,则此操作的行为是不确定的。 (请注意,如果指定的集合是此列表,并且它是非空的,则会发生这种情况。)

答案 1 :(得分:0)

如果这就是你的意思,List本身不会继承任何东西。如果您正在讨论列表中的项目,无论您使用何种类型的列表,它们仍将拥有所有方法:

public class Animal {
    public void speak() {
        System.out.println("<Animal sound>");
    }
}

public class Dog extends Animal{
    @Override
    public void speak() {
        System.out.println("woof");
    }
}

如果您现在将狗添加到动物名单中,它们仍会吠叫:

List<Animal> animalList = new ArrayList<Animal>();
List<Dog> dogList = new ArrayList<Dog>();
doglist.add(new Dog());
animalList.addAll(dogList);
animalList.get(0).speak(); //woof

(我没有测试过此代码,对于任何拼写错误都很抱歉。)