Tôi nghĩ rằng tôi đang thiếu một cái gì đó cơ bản ở đây. Bất kỳ lời giải thích hay chỉ dẫn nào cho các câu hỏi trước đây sẽ rất hữu ích.Là một lớp con mảng String của một mảng đối tượng?
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
}
}
Vì vậy, nó có vẻ như một List<String>
không phải là một lớp con của một List<Object>
nhưng một String[]
là một lớp con của Object[]
.
Đây có phải là giả định hợp lệ không? Nếu vậy, tại sao? Nếu không, tại sao?
Cảm ơn
Từ @maerics bình luận bên dưới - đối tượng 'String mới [0] của Object []' trả về true. Vì vậy, String [] là một loại đối tượng và một loại đối tượng [] và một loại CharSequence [] vv. – Kal
@Kal dường như là một trường hợp đặc biệt để bao gồm hiệp phương sai. Xem cập nhật của tôi – Bozho
Cảm ơn .. Chỉ cần xem bản chỉnh sửa của bạn. – Kal