2013-02-15 121 views
4

查看抽象類ByteBuffer的代碼,很明顯它繼承自基類BufferJava構造函數超級參數

ByteBuffer有一個構造函數:

ByteBuffer(int capacity) { 
    super(capacity); 
} 

而且Buffer有一個構造函數:

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

所以我的問題是 - 當ByteBuffer調用它的父類的構造,如何做到這一點的工作,因爲參數不匹配?

UPDATE:這是一個非的問題,但值得了解一些在線Java源代碼庫(在這種情況下docjar)持有Java源代碼的大雜燴。最好下載JDK **

+1

好吧,我很好奇。 – MikeTheLiar 2013-02-15 15:48:12

+2

我的版本的ByteBuffer(oracle jdk 7)沒有'int'構造函數。不知道你的鏈接指向的是什麼,是的超級(容量)只有在超類中有一個「Buffer(int capacity)」時才能工作。 – assylias 2013-02-15 15:50:15

+1

這可能是版本不匹配。我現在沒有JDK 7,但是在JDK 6中沒有'ByteBuffer(int)'構造函數,只是一個'ByteBuffer(int,int,int,int)',它匹配'Buffer(int,int,int ,int)'構造函數。 – Thomas 2013-02-15 15:51:45

回答

4

好像是文檔錯誤。

ByteBuffer source GrepCode是否正確。

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 
+0

哦!多麼令人失望,我以爲我發現了一些Java魔法。謝謝! (儘管它的確邀請了一個問題:是否有一個「官方」可瀏覽的Java源代碼? – 2013-02-15 15:53:13

+4

@starfish:它位於JDK中的src.zip文件中 – jlordo 2013-02-15 15:55:53

+1

您可以從Oracle下載源代碼(我認爲它甚至可以默認包含在jdk中 - 查找src.zip) – 2013-02-15 15:56:34

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)