我正在创建ArrayLists并使用push()将它们存储在堆栈中。
但是,当我弹出时,它给我一个错误Object cannot be converted to List<Integer>
。这是我的代码:
List<Integer> myl=new ArrayList<Integer>();
myl=myStack.pop();
答案 0 :(得分:1)
两件事:
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
时,在这种情况下,编译器应该如何知道,因为您早先添加了一个列表,所以该值具有更特定的类型?!