java – 一个变换并返回相同对象的迭代器.糟糕的做法?
我写了GC友好的代码来读取并返回给用户一系列的byte []消息.在内部我重复使用相同的
ByteBuffer 这意味着我将在大多数时候重复返回相同的字节[]实例.
我正在考虑写一个警告性的javadoc并将其暴露给用户作为 问题是:对于可能会变异并返回相同对象来实现Iterator接口的类,它是不好的做法吗? >如果是这样,最好的选择是什么? “不要变异/重复使用你的对象”是一个简单的答案.但是,在重用是非常可取的情况下,并没有解决这种情况. 两个小笔记: >我正在使用Guava的 更新:我接受路易斯的答案,因为它比基思的票数多3倍,但请注意,在我的用例中,我打算采取我留下的代码,对基思??的生产答案. 解决方法
EnumMap在其entrySet()迭代器中基本上完全是这样,这导致了令人困惑,疯狂,令人沮丧的错误.
如果我是你,我不会使用迭代器 – 我会写一个不同的API(甚至可能与迭代器完全不同),并实现它.例如,您可以编写一个新的API,作为输入的ByteBuffer将消息写入,因此API的用户可以控制缓冲区是否被重用.这似乎是相当直观的(用户可以编写明显地干净地重用ByteBuffer的代码),而不会产生不必要的杂乱的代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |