我正在创建 ArrayList 并使用 push() 将它们存储在 Stack 中。
然而,当我弹出时,它给我一个错误 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
时,编译器应该如何知道在这种情况下,因为你之前添加了一个列表,该值有一个更具体的类型?!
关于java - 如何将从堆栈弹出的 ArrayList 的类型从对象更改为链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431133/