私はここに何か基本的なものがないと思う。以前に尋ねられた質問に対する説明や指針は非常に役立ちます。オブジェクト配列の文字列配列サブクラスですか?
import java.util.Arrays;
import java.util.List;
public class St {
public static void bla(Object[] gaga) {
gaga[0] = new Date(); // throws ArrayStoreException
System.out.println(gaga[0]);
}
public static void bla(List<Object> gaga) {
System.out.println(gaga.get(0));
}
public static void main(String[] args) {
String[] nana = { "bla" };
bla(nana); // Works fine
List<String> bla1 = Arrays.asList(args);
bla(bla1); // Wont compile
System.out.println(new String[0] instanceof Object[]); // prints true
System.out.println(nana.getClass().getSuperclass().getSimpleName()); // prints Object
}
}
List<String>
がList<Object>
のサブクラスではありませんが、String[]
がObject[]
のサブクラスであるようなので、それはそうです。
これは正当な前提ですか?もしそうなら、なぜですか?そうでない場合、なぜですか?
おかげ
以下の@maericsのコメントから、 'new [インスタンス]オブジェクト[]はtrueを返します。したがって、String []はObjectの型であり、Object []の型であり、CharSequence []などの型です。 – Kal
@Kalは、共分散をカバーする特殊なケースのようです。私の更新を参照してください – Bozho
ありがとう..ちょうどあなたの編集を見た。 – Kal