我有3个子域扩展父域,如下所示:
Dog extends Animal
Cat extends Animal
Snake extends Animal
在我的一项服务中,我有一个List<Animal>
,我正在尝试添加对象(类狗,猫和蛇),如下所示:
List<Animal> animals = Dogs.findAllByBreed("someBreed")
animals << Cats.findAllBySomething("something")
animals = [animals].flatten()
它在run-app上运行良好,我没有得到任何错误。但是,在测试应用程序中,我得到UnsupportedOperationException
,我觉得有点奇怪。
有人能说出什么问题吗?我以为它应该是可能的,因为狗和猫都是动物。我应该更新它们共有的值,但测试失败了。下面是堆栈跟踪。
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at ...
答案 0 :(得分:0)
你确定Dog ---> Dogs.findByBreed("someBreed")
有效吗?我以前从未见过这种复数符号......
无论如何,我建议将原始列表包装成ArrayList
List animals = new ArrayList( Dog.findAllByBreed("someBreed") )
animals.addAll Cat.findAllBySomething("something")
答案 1 :(得分:0)
而不是:
List<Animal> animals = Dogs.findAllByBreed("someBreed")
animals << Cats.findAllBySomething("something")
animals = [animals].flatten()
试试这个:
List<Animal> animals = Dogs.findAllByBreed("someBreed")
animals += Cats.findAllBySomething("something")
当您使用animals << Cats.findAllBySomething("something")
时,您要向List<Cat>
添加List<Animal>
,这是无效的。您应该能够将Cat
个实例添加到List<Animal>
,但无法将List
添加到List<Animal>
。当您使用+=
时,您要将List<Cat>
的元素添加到List<Animal>
,这可能是您想要的。