Java构造函数中的Super参数

4
看一下抽象类ByteBuffer的代码,显然它继承了基本类BufferByteBuffer只有一个构造函数:
ByteBuffer(int capacity) {
    super(capacity);
}

Buffer只有一个构造函数:

Buffer(int mark, int pos, int lim, int cap) { 
    ...
}

所以我的问题是 - 当 ByteBuffer 调用其父构造函数时,这是如何工作的,因为参数不匹配?
更新:这不是一个问题,但值得知道一些在线Java源代码库(在这种情况下是docjar)持有混杂的Java源代码。最好下载JDK。

1
好的,我很感兴趣。 - Mike G
2
我的 ByteBuffer 版本(oracle jdk 7)没有 int 构造函数。不确定你的链接指向什么...是的,如果超类中有一个 Buffer(int capacity),那么 super(capacity) 才能起作用。 - assylias
1
可能是版本不匹配。我现在这里没有JDK 7,但在JDK 6中,没有ByteBuffer(int)构造函数,只有一个ByteBuffer(int, int, int, int)Buffer(int, int, int, int)构造函数相匹配。 - Thomas
1
你使用的Java版本是什么?我看到ByteBuffer是一个抽象类,作为Buffer存在,但我没有看到你提供的构造函数。不过我看到了一个静态分配方法 - mtk
链接在问题中(锚点不是很明显,但它们就在我写的Buffer和ByteBuffer处)。我正在查看docjar。听起来很正式! - Party Ark
2个回答

4
似乎是一份文档错误。 GrepCode 上的 ByteBuffer 源代码是正确的。
  ByteBuffer(int mark, int pos, int lim, int cap,   // package-private
274                  byte[] hb, int offset)
275     {
276         super(mark, pos, lim, cap);
277         this.hb = hb;
278         this.offset = offset;
279     }
280 

哦!太令人失望了,我以为我找到了一些Java的魔法。谢谢!(不过,这确实引发了一个问题:是否有一个“官方”的可浏览的Java源代码?) - Party Ark
4
在你的JDK中,文件src.zip可以找到。 - jlordo
1
你可以从Oracle下载源代码(我认为它甚至可能默认包含在jdk中 - 寻找src.zip)。 - Sean Landsman

0

很抱歉,看起来你正在查看的Buffer类已经过时了 - 当前的javadoc如下:

ByteBuffer(int mark, int pos, int lim, int cap) {   // package-private
ByteBuffer(int mark, int pos, int lim, int cap,          // package-private
  byte[] hb, int offset)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接