我有以下代码段:
final SamReader reader = factory.open(INPUT);
final CloseableIterator<SAMRecord> it = reader.iterator();
// some code
while (it.hasNext()) {
final SAMRecord rec = it.next();
AbstractAlignmentMerger.createNewCigarsIfMapsOffEndOfReference(rec);
if (rec.getReadUnmappedFlag() && 0 != rec.getMappingQuality()) {
rec.setMappingQuality(0);
}
}
我想当我修改rec
时,我也在修改reader
的内容。 Java是引用对象的,所以我想知道,如果它是真的吗?或者,如果不是,我怎么能成真呢?
结果是否会在reader
中提供?
答案 0 :(得分:0)
这取决于。 reader
等SAMReader
通常用于解析信息。如果reader
保留对对象的引用,那么您可能希望对象已更改。但是,如果您从读者那里请求Iterator
解析重新开始,那么更有可能发生这种情况。在这种情况下,更改将会丢失。
请注意,实现Iterable
从二进制源检索对象是一个奇怪的设计决策。您会期望InputStream
的扩展名(例如DataInputStream的样式)。