theo dõi

Gần nhất :

Tags

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : Android
Hỏi lúc:
Lượt xem: 1,768

Lấy class của java.util.Arrays$ArrayList?

Lê Nhất Thương Lê Nhất Thương
 03  01  00
03 bình chọn hữu ích bởi Hồ Ðông Nhi, Hồ Thu Duyên Nguyễn Nhật Linh

Làm thế nào có thể biết thể hiện của java.util.Arrays$ArrayList. Mình đã thử đoạn mã này, nhưng nó không hoạt động:

if (myList instanceof Arrays) {
    //Do something here.
}

Mình đã so sánh các đối tượng với classtype ArrayList và đã có cùng một vấn đề. Nhưng trong khi mình đang kiểm tra các đối tượng, các classType là:

class java.util.Arrays$ArrayList

Các câu lệnh điều kiện dưới đây là giải pháp duy nhất mình tìm thấy:

else if (myList.getClass().toString().equals("class java.util.Arrays$ArrayList")) {
    //do something here
}

nhưng mình nghĩ rằng việc điều khiển các loại đối tượng bằng cách sử dụng instanceof sẽ là một giải pháp tuyệt vời.

Câu hỏi của mình là: classType của java.util.Arrays$ArrayList là gì, mình có thể sử dụng instanceof để điều khiển.

Thank all

1,768 xem 06 theo dõi 03 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Bùi Như Giang Bùi Như Giang
 03  00  01
03 bình chọn hữu ích bởi Tạ Thục Tâm, Lê Trung Nguyên Vũ Thành Công

Trong trường hợp danh sách đến từ Arrays#asListArrayList trả lại kết quả là NOT java.util.ArrayList, do đó so sánh với lớp học này sẽ luôn luôn thất bại.

Câu hỏi là tại sao bạn cần phải biết rằng chính xác là nó thực hiện điều này?

Có lẽ nó là đủ để kiểm tra cho java.util.List?

1,562 xem 03 hữu ích trả lời –
Ngô Anh Hùng Ngô Anh Hùng
 00  00  02

java.util.Arrays$ArrayList là một lớp private bên trong của Array, trả về bởi phương pháp Arrays.asList.

Vì nó là một lớp riêng không có cách nào để có được quyền truy cập vào các lớp trong một cách mà nó có thể được sử dụng với các toán tử instanceof. Bạn có thể thực hiện kiểm tra này sử dụng phản chiếu tuy nhiên:

Class<?> clazz = Class.forName("java.util.Arrays$ArrayList");
// ...
clazz.isAssignableFrom(myList)

Nhưng tôi khuyên bạn không nên làm điều đó. Đó là một thói quen tốt để chương trình chống lại một giao diện. Trong trường hợp này, List giao diện định nghĩa hành vi của đối tượng. Các lớp học thực tế của đối tượng không phải vấn đề.

1,560 xem 00 hữu ích trả lời –
Nguyễn Xuân Thu Nguyễn Xuân Thu
 00  00  01

Tại sao bạn đang sử dụng Arrays? Bạn phải sử dụng ArrayList như trong mã này

if (myList instanceof ArrayList) {
    //Do something here.
}
1,561 xem 00 hữu ích trả lời –