2015年11月14日

日記

java.io.ObjectOutputStream, java.io.DataOutputStream の API を(おそらく)はじめて見てみたんだが、DataOutput から継承しているいろいろな writeXxxx() メソッドがあって最初なんじゃこりゃ?と思ってしまう。 int を引数に持つ writeByte(), writeChar(), writeShort(), writeInt() ってのは数値リテラルの書きやすさとかキャストの不必要さ程度の話かなと思うけど、String を引数にとる writeBytes(), writeChars() ってのがなんぞや?と思って試しに動かしてみると、writeBytes() は1文字に1バイトだけ書き込むのに対して wirteChars() は1文字に2バイト書き込むという動作。 まぁ、たしかに動作を見た後では数値の場合と一貫した動作ではある。

GDK (Groovy JDK) ではストリームへの書き込みに << 演算子(leftShift() メソッド)を使えるように拡張してあるんだけど、ObjectOutputStream, DataOutputStream ではこの演算子が拡張されてなかったのは上記のようないろいろな write メソッドのせいかもしれないね。 Groovy では演算子として定義できる記号は制限されてるけど、Scala ではもっといろいろな記号が使えるので、書き込むバイト数に応じて

  • 「<+」 ・・・ 1バイト
  • 「<++」 ・・・ 2バイト
  • 「<#」 ・・・ 4バイト
  • 「<##」 ・・・ 8バイト

みたいなメソッド名にしてはどうだろう・・・とか思ったけど、普通に write メソッド使った方が分かりやすそうだなw

なぜかふと『ごちうさ』2期の OP を買ってしまった。 1期も2期もアニメ本体は観てないのだが・・・

ツイート (ツイート数 32)