List.toArray() が一般的でないのはなぜですか? なぜ型を引数として与えなければならないのですか (そして通常は新しい空のインスタンスを作成します)?
public Object[] toArray()
http://docs.oracle.com/javase/7/docs/api/java/util/List.html#toArray()
更新: ジェネリック配列の作成が許可されていないことを知りましたが、許可されるべきだと思います。許可されない理由はありますか?
Main.java:28: error: generic array creation
T[] ret = new T[size()];
更新:わかりました、これが答えだと思います:
http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays
直接関係があるからではなく、間接的に関係があるからです。に変換されるnew T[size()]
, where には本質的に問題はありませんが、 T 自体がパラメーター化された型になる可能性があります。そのため、 を作成すると、が等しくなり、コンパイラが を作成しようとするため、リンクが返されたときに問題が発生する可能性があります。誰かがこれらの線に沿って答えようとしましたが、その答えはその後削除されたため、誰だったか忘れてしまいました。MyList<String>
new String[size()]
MyList<Set<Integer>>
T
Set<Integer>
new Set<Integer>[size()]