我正在创建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
,那么编译器应该怎么知道在这种情况下,因为你之前添加了一个列表,这个值有一个更具体的类型?!