如何将从堆栈弹出的 ArrayList 的类型从对象更改为链表?

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

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


长风秋雁
浏览 64回答 1
1回答

aluckdog

两件事情:List<Integer>&nbsp;myl&nbsp;=&nbsp;new&nbsp;ArrayList<Integer>();可以简化为:List<Integer>&nbsp;items&nbsp;=&nbsp;new&nbsp;ArrayList<>();菱形运算符允许避免重复类型信息。我也将其更改为使用有意义的名称。不要使用没有意义的缩写。使用你的读者容易理解的东西。然后,您只需要一个演员表:items&nbsp;=&nbsp;(List<Integer>)&nbsp;myStack.pop();当然,这需要您确实在堆栈顶部有一个列表!理想情况下,您的堆栈本身可以支持泛型,这样您就可以这样说:MyStack<List<Integer>>&nbsp;myStack&nbsp;=&nbsp;new&nbsp;MyStack<>();这样你以后就可以简单地去items&nbsp;=&nbsp;myStack.pop();没有演员!你看,当你的方法签名说 时this method returns Object,那么编译器应该如何知道在这种情况下,因为你之前添加了一个列表,该值具有更具体的类型?!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java