Nói rằng tôi bằng cách nào đó có một tham chiếu đối tượng từ một lớp khác:Làm thế nào để có được tên tham số của một nhà xây dựng của đối tượng (phản ánh)?
Object myObj = anObject;
Bây giờ tôi có thể nhận được các lớp của đối tượng này:
Class objClass = myObj.getClass();
Bây giờ, tôi có thể nhận được tất cả các nhà xây dựng của lớp này:
Constructor[] constructors = objClass.getConstructors();
Bây giờ, tôi có thể lặp mỗi constructor:
if (constructors.length > 0)
{
for (int i = 0; i < constructors.length; i++)
{
System.out.println(constructors[i]);
}
}
Điều này đã mang lại cho tôi bản tóm tắt tốt về hàm tạo, ví dụ: Kiểm tra công khai hàm (String paramName) được hiển thị là Kiểm tra công khai (java.lang.String)
Thay vì cho tôi loại lớp, Tôi muốn lấy tên của tham số .. trong trường hợp này là "paramName". Tôi sẽ làm như thế nào? Tôi đã thử những điều sau đây mà không thành công:
if (constructors.length > 0)
{
for (int iCon = 0; iCon < constructors.length; iCon++)
{
Class[] params = constructors[iCon].getParameterTypes();
if (params.length > 0)
{
for (int iPar = 0; iPar < params.length; iPar++)
{
Field fields[] = params[iPar].getDeclaredFields();
for (int iFields = 0; iFields < fields.length; iFields++)
{
String fieldName = fields[i].getName();
System.out.println(fieldName);
}
}
}
}
}
Thật không may, điều này không mang lại kết quả mong đợi. Bất cứ ai có thể cho tôi biết làm thế nào tôi nên làm điều này hoặc những gì tôi đang làm sai? Cảm ơn!
Điều này có thể thông qua phản ánh trong ** Java 8 **, xem [câu trả lời SO này] (http://stackoverflow.com/a/21455958/573057) - được tìm thấy bằng cách đọc tài liệu về [paranamer] (https: //github.com/paul-hammant/paranamer) từ câu trả lời của Duncan McGregor dưới đây. – earcam