String ialah subkelas Object, tetapi String[] bukan subkelas Object[], jadi rujukan kepada String yang jenis sebenar ialah Object boleh dihantar ke String. Walau bagaimanapun, Object[] tidak boleh dipaksa ke dalam String[] Anda hanya boleh menetapkan nilai satu demi satu dan memaksa rujukan di dalam satu demi satu dan kemudian menyalinnya (sudah tentu anda boleh menggunakan Arrays.copyOf() untuk melakukan ini. <.>
(T[]) Arrays.copyOf(elementData, size, a.getClass());
Penukaran paksa boleh berjaya kerana jenis tatasusunan itu sendiri ialaha.getClass()
.Objek tatasusunan (jenis sasaran) dibuat melalui
Array.newInstance(newType.getComponentType(), newLength)
.String[] y = (String[]) x.toArray()
tidak boleh dihantar kerana jenis dataarray
ialahObject[]
bukannyaString[]
.String
ialah subkelasObject
, tetapiString[]
bukan subkelasObject[]
, jadi rujukan kepadaString
yang jenis sebenar ialahObject
boleh dihantar keString
. Walau bagaimanapun,Object[]
tidak boleh dipaksa ke dalamString[]
Anda hanya boleh menetapkan nilai satu demi satu dan memaksa rujukan di dalam satu demi satu dan kemudian menyalinnya (sudah tentu anda boleh menggunakanArrays.copyOf()
untuk melakukan ini. <.>Adalah sah untuk menukar nilai subkelas kembali kepada subkelas
Hantar nilai Object[] ke dalam String[], tingkah laku ini serupa dengan
(Integer)(new Object())
Jenis generik ArrayList
E
tidak diperlukan apabila jenis generik tidak dinyatakan, contohnya:Kaedah kedua tidak boleh digunakan dalam kes ini dan tiada cara untuk melakukan penukaran jenis paksa