这是Java 7中的一个错误吗?

  发布于 2023-02-13 16:29

我不知道在哪里寻求有关Java API文档和Java代码的澄清和确认,所以我在这里做.

在API文档中FileChannel,我发现在一个以上的地方提交文件position和文件的一个一个错误size.

这只是一个例子.transferFrom(...)州的API文件:

"如果给定位置大于文件的当前大小,则不传输任何字节."

我确认OpenJDK代码也包含此代码...

public long transferFrom(ReadableByteChannel src, long position, long count)
    throws IOException
{
    // ...
    if (position > size())
        return 0;
    // ...
}

...在FileChannelImpl.java与文档一致的文件中.

现在,虽然上面的代码片段和API文档看起来相互一致,但我觉得"上面应该'大于或等于'而不仅仅是'大于',因为position它是一个基于0的文件数据索引,阅读时position == size()将没有数据返回给来电者!(position == size() - 1至少1个字节 - 文件的最后一个字节 - 可以返回给调用者.)

以下是同一API文档页面中的其他类似实例:

    position(...):"将位置设置为大于文件当前大小的值是合法的,但不会更改文件的大小." (应该是'大于或等于'.)

    transferTo(...):"如果给定位置大于文件的当前大小,则不传输任何字节." (应该是'大于或等于'.)

    read(...):"如果给定位置大于文件的当前大小,则不读取任何字节." (应该是'大于或等于'.)

最后,返回值的文档部分read(...)未能与其余文档保持自我一致.以下是它所说的内容:

read(...)

返回:

如果给定位置大于或等于文件的当前大小,则读取的字节数(可能为零)或-1

所以,在这个单一的例子中,我确实看到他们提到正确的事情.

总的来说,我不知道该怎么做.如果我今天编写的代码与本文档相匹配,那么Java中未来的错误修复(代码或文档)将导致我的代码错误,需要我的修复.如果我今天自己做正确的事情,就像他们今天所做的那样,那么我的代码就开始变得错误!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有