resources久々にJavaでHTTPクライアントを書いて、そういえば1.4.2の頃はコネクションタイムアウトすら設定できなかったからSocketを使ったなぁとか思い出しながらJDKのドキュメントを眺めているとURLConnectionが随分とまともになっているようで感心しがてら使うことにした。resourcesが使えるので次のように書いて失敗した。bao.toString("UTF-8");}...とても不思議だった(が、わかればそれはそうかも知れないとは思うが、ろくなAPIとも思えない)。あと、こういう処理を考えると、"UTF-8"と文字列でCharsetを指定するよりも、Charsetのインスタンスをあらかじめ用意して使いまわしたいのだが、ByteArrayOutputStreamのtoStringがStringを引数に受けるものしか用意していないのが中途半端に感じた。次のようなクラス定義をした。...}つまり、finalフィールドとすることで読み込み専用のフィールドとして外部に使わせたい(ついでに誤った更新をコンパイル時に弾く)ということだ。コンストラクタを書く。}するとコンパイラが、barを初期化しないパスがあると文句を垂れる。初期化していないというのはデタラメ千万で、仕様によりフィールドの初期値はnullと決まっている。declaredなのでおれが無知だった)。e)ではなくずらずらリフレクション関係の例外を複数の節に書いているので、ExceptionとかThrowableでcatchしてthrowすればそのパスはあり得なくなるから、文句は垂れられなかったのかも。コンパイラ用のスィッチとか調べるのが面倒なのでしょうがないので明示的に設定してやった。}すると今度は、重複した初期化というコンパイルエラーとなった。それはそれほど悪いエラーではないが、デフォルト警告で十分だろう(あくまでもスィッチを調べる気にはならないのだが、本当にあるのかなぁ)。まともにつきあうのがいやになったので、finalを削除しておしまい。追記:仕様通りの動作であるならば、記述方法を変えるしかない。いうわけで、次のように書くのが正解なのだろう。コンストラクタの最後にローカル変数を利用して初期設定。09:04)「ExceptionとかThrowableでcatchしてthrowすればそのパスはあり得なくなるから、文句は垂れられなかったのかも」が正解だと思います。