ラップされているか教えて欲しい。
「念のためBufferedOutputStreamでバッファリングしておこう」とか「Collections.unomidifiableListで変更不可にしておこう」とか。気づくと何重にもラップされていたり。
前者は、自分でも回避できる。受けとったストリームがinstanceof BufferedOutputStreamだったら、やらなければいいわけだ。でもバッファサイズが違ったりするかもしれないし。バッファサイズが自分の想定より大きければバッファリングしないとかできればいいんだけど。サイズが外から分かればね。
後者は、ちょっと無理だ(型名を見れば分からないでもないけど、そこまでやる気にはならない)。UnmodifiableCollectionはパッケージプライベートだから手が出せない。Collections.unmodifiableXXX()の中で同様の処理をしてくれればいいんだけど。
ジェネリクス
これって何でエラーになるんだろ。
static List<Comparable<Integer>> getList() {
return new ArrayList<Integer>();
}
D:\tmp\test\src\test\Main.java:29: 互換性のない型
検出値 : java.util.ArrayList<java.lang.Integer>
期待値 : java.util.List<java.lang.Comparable<java.lang.Integer>>
return new ArrayList<Integer>();
と思ったら、そうか、これがエラーになるのと同じ原因か。
List<String> list = new ArrayList<String>();
List<Object> list2 = list;
ワイルドカードならok。もっとも戻り値に要素の追加はできなくなるけど。
static List<? extends Comparable<Integer>> getList() {
ファイル共有
どうも最近は、単純なファイル共有はうまく行かないようだ。今はみんなエクスプローラを使うもんだから、ちょっとした操作ミスで甚大な被害が起きる。良くあるのがディレクトリごとどっかに移動されてしまうミス。
やっぱりちょっと面倒でもTortoiseSVNとか覚えてもらうしか無いんだろうな。





