如何将ArrayList的更改类型从对象弹出到链接列表?

时间:2019-06-03 16:19:48

标签: java linked-list stack pop

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

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

1 个答案:

答案 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时,在这种情况下,编译器应该如何知道,因为您早先添加了一个列表,所以该值具有更特定的类型?!