List.toArray()が一般的でないのはなぜですか?なぜ型を引数として与えなければならないのですか(そして通常は新しい空のインスタンスを作成する必要があります)? なぜ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()];
更新:[OK]を私はこれが答えであると信じて:
http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays
ない、それは直接関係はなく、間接的に関連性があるからです。 MyList<String>
はnew String[size()]
になりますが、T自体がパラメータ化されたタイプである可能性があります。new T[size()]
には本質的に間違ったものはありません。したがって、MyList<Set<Integer>>
を作成する場合、T
はSet<Integer>
と等しくなり、コンパイラはnew Set<Integer>[size()]
を作成しようとします。この場合、返されたときにリンクに問題が発生する可能性があります。誰かがこれらの行に沿って答えを出そうとしましたが、その回答は削除されていたので、私はそれが誰かを忘れてしまいました。
オーバーレイされたバージョンのtoArrayは、汎用の –
より少し下にスクロールします。 – SLaks
@ Dgrin91しかし、配列としてインスタンスをパラメータとして渡す必要があります。これはOPが要求していたものです。 – ajb