Tôi nhận thấy rằng trong API phản chiếu Java có hai phương thức khác nhau để gọi các hàm tạo: phương thức getDeclaredConstructors
/getConstructors
. Mặc dù các tài liệu Java hơi khác nhau (getDeclaredConstructors
dường như ngụ ý rằng nó trả về TẤT CẢ các nhà xây dựng, chứ không phải là các trình xây dựng công khai), nhưng không rõ lý do tại sao API hỗ trợ rõ ràng hai phương thức khác nhau này.Sự khác nhau giữa getDeclaredConstructors và getConstructors trong API lớp là gì?
Quan trọng hơn, tôi tự hỏi: khi nào một phương pháp sẽ thích hợp hơn với phương pháp khác nếu chúng ta đang gọi các lớp động? Ví dụ, mục đích của việc truy cập một hàm tạo riêng là gì?
và bằng cách sử dụng constructor.setAccessible (true), bạn có thể gọi một cách phản ánh các hàm tạo riêng tư. – MeBigFatGuy
Trong khi câu trả lời này là chính xác, có một chút báo trước. Trình biên dịch sẽ tự động cung cấp một hàm khởi tạo công khai mặc định (không có đối số) cho bất kỳ lớp nào không định nghĩa rõ ràng bất kỳ trình xây dựng nào. 'getConstructors' sẽ không trả về hàm tạo mặc định này nhưng' getDeclaredConstructors' sẽ làm. – neXus