कहें कि किसी भी तरह से किसी अन्य वर्ग से ऑब्जेक्ट संदर्भ प्राप्त हुआ है:ऑब्जेक्ट के कन्स्ट्रक्टर (प्रतिबिंब) के पैरामीटर नाम कैसे प्राप्त करें?
Object myObj = anObject;
अब मैं इस ऑब्जेक्ट की कक्षा प्राप्त कर सकता हूं:
Class objClass = myObj.getClass();
अब, मैं इस वर्ग के सभी निर्माता प्राप्त कर सकता हूं:
Constructor[] constructors = objClass.getConstructors();
अब, मैं प्रत्येक कन्स्ट्रक्टर को लूप कर सकता हूं:
if (constructors.length > 0)
{
for (int i = 0; i < constructors.length; i++)
{
System.out.println(constructors[i]);
}
}
यह पहले से ही मुझे कन्स्ट्रक्टर का एक अच्छा सारांश दे रहा है, उदाहरण के लिए एक कन्स्ट्रक्टर सार्वजनिक टेस्ट (स्ट्रिंग पैरामनाम) को सार्वजनिक टेस्ट (जावा। lang.String)
मुझे कक्षा प्रकार देने के बजाय, मैं पैरामीटर का नाम प्राप्त करना चाहता हूं .. इस मामले में "paramName"। मुझे यह कैसे करना है? मैंने बिना सफलता के निम्नलिखित प्रयास किए:
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);
}
}
}
}
}
दुर्भाग्यवश, यह मुझे अपेक्षित परिणाम नहीं दे रहा है। क्या कोई मुझे बता सकता है कि मुझे यह कैसे करना चाहिए या मैं क्या गलत कर रहा हूं? धन्यवाद!
यह ** जावा 8 ** में प्रतिबिंब के माध्यम से संभव है, [यह SO उत्तर] (http://stackoverflow.com/a/21455958/573057) देखें - [paranamer] पर दस्तावेज़ पढ़ने से प्राप्त (https: //github.com/paul-hammant/paranamer) नीचे डंकन मैकग्रेगर के उत्तर से। – earcam