.NETはTが引数なしのコンストラクタを持たなければならないという
制約を指定することでnew T()ができる
Javaでそれができないのは実装の都合
実行時に型が作られるんじゃなくて、実際はObjectで利用側のコードでダウンキャストを省略してるだけ