如何将 ArrayList 的类型从堆栈从对象弹出到链接列表



我正在创建ArrayLists并使用push((将它们存储在堆栈中。但是当我弹出时,它会给我一个错误,Object cannot be converted to List<Integer>.这是我的代码:

 List<Integer> myl=new ArrayList<Integer>();
 myl=myStack.pop();

两件事:

List<Integer> myl = new ArrayList<Integer>(); 

可以简化为:

List<Integer> items = new ArrayList<>(); 

钻石运算符允许避免重复类型信息。我还将其更改为使用有意义的名称。不要使用没有意义的缩写。使用读者容易理解的内容。

然后,你只需要一个演员表:

items = (List<Integer>) myStack.pop();

当然,这需要您在堆栈顶部真正有一个列表!

理想情况下,您的堆栈本身可以支持泛型,因此您可以这样说:

MyStack<List<Integer>> myStack = new MyStack<>();

所以你以后可以简单地去

items = myStack.pop();

没有演员!

你看,当你的方法签名说this method returns Object,那么编译器应该怎么知道在这种情况下,因为你之前添加了一个列表,这个值有一个更具体的类型?!

最新更新