我對這段Java代碼(一個名爲Message的類)非常困惑。我認爲第二個構造函數的初始化值爲data_length
,爲此目的,它調用一個名爲init
的方法,如您所見。允許使用Java方法進行遞歸調用?
但是init
裏面發生了什麼事情讓我在我的桌子上激動不已:D這種方法裏面發生了什麼?爲什麼它自稱?
/**
* The actual length of the message data. Must be less than or equal to
* (data.length - base_offset).
*/
protected int data_length;
/** Limit no-arg instantiation. */
protected Message() {
}
/**
* Construct a new message of the given size.
*
* @param data_length
* The size of the message to create.
*/
public Message(int data_length) {
init(data_length);
}
public void init(int data_length) {
init(new byte[data_length]);
}
我將這段代碼爲C#,是不是很好,如果我做的只是:
public class Message
{
//blah blah and more blah
private int _dataLength;
public Message(int dataLength)
{
_dataLength = dataLength;
}
}
它不是遞歸的。它是_overloaded_我不知道在哪裏定義了一個'init(byte [] buffer)' - 你沒有發佈它。 – Oded
@mP。這有點意思 –