为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

长风秋雁 2022-12-28 16:28:39
我正在创建 ArrayLists 并使用 push() 将它们存储在 Stack 中。然而,当我弹出时,它给了我一个错误Object cannot be converted to List<Integer>。这是我的代码: List<Integer> myl=new ArrayList<Integer>();  myl=myStack.pop();
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

两件事情:

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


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 59 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信