Tôi rất mới trong Reflection và tôi có một nghi ngờ như:
Lý do đằng sau phương thức setAccessible của lớp AccessibleObject có tham số boolean là gì?
public void setAccessible(boolean flag) throws SecurityException
Phương pháp này có một lá cờ boolen
tham số, mà chỉ ra khả năng tiếp cận mới của bất kỳ lĩnh vực hoặc các phương pháp.
Đối với một ví dụ nếu chúng ta cố gắng truy cập vào một phương pháp private
của một lớp từ bên ngoài lớp sau đó chúng tôi lấy phương pháp sử dụng getDeclaredMethod
và thiết lập khả năng tiếp cận như true
, vì vậy nó có thể được gọi, như: method.setAccessible(true);
Bây giờ, trong đó kịch bản chúng ta nên sử dụng method.setAccessible(false);
, ví dụ: nó có thể được sử dụng khi có phương thức public
và chúng tôi đặt khả năng truy cập là sai. Nhưng nhu cầu đó là gì? Sự hiểu biết của tôi có rõ ràng không?
Nếu không có sử dụng method.setAccessible(false)
sau đó chúng ta có thể thay đổi chữ ký phương pháp như:
public void setAccessible() throws SecurityException
Bạn không muốn rời khỏi mã theo phản ánh trong một trạng thái mà các lập trình viên của mã ** không có ý định ** . Bạn có? Bạn đã sử dụng sự phản chiếu để _unlock_ một đoạn mã để kiểm tra, bạn có muốn để nó _unlocked_ sau đó không? –
Yup. có quan điểm của bạn. –
Downvoater bạn có thể đặt chú thích để tôi có thể cải thiện câu hỏi của mình .. –