当前位置: 首页 > 知识库问答 >
问题:

处理列表“可选操作”

蒋泰
2023-03-14

我在查看列表的javadoc以找到一个允许替换元素(set(int,E))的方法,我发现该方法是“可选的”。我搜索了一会儿,找到了另一个问题,劳伦斯·贡萨尔维斯给出了一个很好的答案。

但我仍然有一个问题,直到现在,每次我使用任何接口时,我都没想到一个实现会抛出运行时异常(除非我使用了错误的接口,或者它是实现代码中的一个错误),即使我在不小心尝试将元素添加到不可变列表时出现异常,我也没有意识到发生了什么。

我的问题是:如果我有一个API方法,它有一个List(或其他一些接口)参数,必须对该对象调用“可选”操作,我应该如何继续?

  • 我应该避免使用List,而使用一些实现作为参数吗?
  • 我是否应该制作一个列表的防御性副本,修改它并返回该列表?(这可能会改变api客户端使用的实现)

我知道,更改方法中作为参数接收的列表的必要性值得怀疑,但这可能是必要的

共有1个答案

巫马化
2023-03-14

Java库本身始终回答您的两个问题“否”。例如,实用方法集合。shuffle接受任何列表,如果传递给它的列表不支持必要的操作,则抛出异常。总的来说,坚持这种行为与Java库和主要的开发实践是一致的:继续使用列表,就好像它是可变的一样,如果有人传入一个列表而不支持必要的操作,他们将得到他们应得的异常。

 类似资料:
  • 滑动操作列表是列表的扩展,它提供滑动操作的功能,滑动列表元素可以展现隐藏的功能菜单,就像滑动删除一样。 让我们来看一下滑动列表元素的布局结构: <div class="list-block"> <ul> <!-- li上额外的“swipeout”类 --> <li class="swipeout"> <!-- 被“swipeout-content”包裹起来的普通列表

  • 直接上代码看注释: <?php namespace Yurun\Util\YurunHttp; /** * 所有属性的常量定义 * * PRIVATE_ 开头的为内部属性,请勿使用 */ abstract class Attributes { /** * 客户端参数 */ const OPTIONS = 'options'; /**

  • 我正在处理包含数据库中多个记录列表的。 我应该如何指定处理每个子列表的块大小? 感谢您的帮助,提前谢谢。

  • 问题内容: 我希望它能够仅使用lira_cbt作为参数(执行x),或者同时使用lira_cbt和eur_hedge(执行y)运行。可以使用sys.argv实现吗? 问题答案: 只需使用长度

  • 译者:bat67 最新版会在译者仓库首先同步。 在这个教程里,我们将学习如何使用数据并行(DataParallel)来使用多GPU。 PyTorch非常容易的就可以使用GPU,可以用如下方式把一个模型放到GPU上: device = torch.device("cuda:0") model.to(device) 然后可以复制所有的张量到GPU上: mytensor = my_tensor.to(

  • 该页显示列表中的正确值。然而,当我尝试选择一个项目。它不起作用。 我能在列表中选择一个项目吗?