2017-07-26 70 views
-1

我有一個應該返回ByteBuffer的方法。該方法的肉執行以下操作:當上一個值爲空時ByteBuffer翻轉

if (true) { 
    //code that puts some data into ByteBuffer bb 
    return bb 
} 
else { 
    //should not be writing any data to bb 
    //intention: leave bb as is 
    return null; 
} 

調用此方法,並把必要的數據到字節緩衝區後,我把它變成一個字節數組先調用bb.flip()。但是,如果通過if-else循環的最後一次迭代發生錯誤,那麼最後輸入的數據是null,我得到了java.lang.NullPointerException錯誤。

Allocating zero capacity ByteBuffer

根據上面的頁面,我應該返回一個零長度的ByteBuffer,但我不知道怎麼回這樣的事情。

關於如何返回空字節緩衝區的任何想法?

+0

[Stack Overflow用戶需要多少研究工作?](https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users )答案是:「很多,一個荒謬的數額,超過你認爲你的能力,當你到達繩索的盡頭,沒有答案的痛苦超過了通過發佈你的問題收到的大量羞恥,那時候你可以繼續問,因爲在那個時候,你會做任何必要的研究,使它成爲一個值得問的問題。「* –

+0

你發佈的問題有你需要的確切代碼。 **這實際上是問題中的第二行!**到目前爲止您詢問的每個[tag:java]問題都可以通過簡單閱讀[tag:javadoc]來解釋。 –

+0

在來這裏學習使用[JavaDoc](https://stackoverflow.com/questions/11747712/where-is-the-javadoc-for-my-installed-java-i-have-sdk-for-7)請求其他人閱讀給你。 ['ByteBuffer.allocate()'](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#allocate(int)) –

回答

0

既然你要在任何一種情況下使用ByteBuffer,該方法應該無條件地返回它 - 返回null只會導致你觀察到的錯誤。

爲了使這個代碼更清晰,我只是讓方法返回類型void。該方法可以通過調用方法將字節添加到ByteBuffer(或不是) - 這裏的返回值實際上是多餘的。

0

在下面的語句,以避免NPE(空指針異常)

回報ByteBuffer.allocate(0)else塊使用;