java中的对象赋值

时间:2015-08-17 16:33:26

标签: java

我有以下代码段:

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中提供?

1 个答案:

答案 0 :(得分:0)

这取决于。 readerSAMReader通常用于解析信息。如果reader保留对对象的引用,那么您可能希望对象已更改。但是,如果您从读者那里请求Iterator解析重新开始,那么更有可能发生这种情况。在这种情况下,更改将会丢失。

请注意,实现Iterable从二进制源检索对象是一个奇怪的设计决策。您会期望InputStream的扩展名(例如DataInputStream的样式)。