えーJavaって、List<Hoge> list = Arrays.asList(new Hoge {{ ... }})できないのー?
2013-09-03 14:00:37@ktz_alias List<Hoge> list = Arrays.asList(new Hoge[]{ ... }); ですか?
2013-09-03 14:03:20@bleis @ktz_alias だったら List<Hoge> list = Arrays.<Hoge>asList(new Hoge(){{ ... }}); ですかね。型推論が失敗してるだけなので
2013-09-03 14:07:17@nagise @bleis フィールドpublicにしてて、初期化のために、hoge.aとか書くのたるいので、匿名クラスで代用しようとした結果です。
2013-09-03 14:08:16@bleis 共変の指定がソースコードの中であふれかえるので、できればC#みたいにクラス内に閉じて欲しかったんですけどね...。ただでさえ常に変数の型名指定しなきゃならんわけで。
2013-09-03 14:12:04@ktz_alias @bleis List<Hoge> list = Arrays.<Hoge>asList(new Hoge(){{ ... }}); が正解。asList(T ...)の部分にHogeのサブクラス渡したので型推論が失敗してるだけ
2013-09-03 14:13:32@nagise @bleis これはいけました。メソッドの前に解決したい型名指定すればよかったのですね。C# みたくメソッド名の後につけてできなかったので、明示指定できないものと思い込んでいました。
2013-09-03 14:16:42@ktz_alias @bleis メソッドスコープのジェネリクスに明示的に型をバインドする構文はあまり知られてないですからね。そしてメソッドスコープのときだけ型推論が効くので、問題点が分かりにくい感じですね。ジェネリクスのよいサンプルコードですね :-)
2013-09-03 14:18:25一方Java8では・・・
会社でdelphiのちC# おうちでphp(最近放置プレーぎみ) scalaは3歩進んで10歩下がる感じ F#かわいいよF# 音ゲーとシューティングとパズルゲーが好物(下手の横好き)