ObjectXXXXXStreamの謎

①ObjectInputStream oin = new ObjectInputStream(new BufferedInputStream(sock.getInputStream())); はここでブロックする。
②ObjectInputStream oin = new ObjectInputStream(sock.getInputStream()); は動く。


③DataInputStream din = new DataInputStream(new BufferedInputStream(sock.getInputStream()));
ObjectInputStream oin = new ObjectInputStream(din);
もだめ。ブロックする。

謎だ。ObjectInputStreamとか(Outputもだけど)ってBufferedと合わせちゃいけないとかあったっけ?

あと、getInputStreamとgetOutputStreamって呼ぶ順序に何か制約ってあったっけ?

とりあえず②の書き方をしてgetXXXの呼ぶ順序を変えることで動くようになったが、なんかしっくりこない。誰か教えて。

JDK(1.4系列)のバグか?