आप जो भी मांग रहे हैं, उसे करने के लिए कोई भाषाई समर्थन नहीं है।
आप परावर्तन का उपयोग करके प्रतिबिंब के समय (उदाहरण के Class.getDeclaredFields()
लिए एक सरणी प्राप्त करने के लिए Field
) के प्रकार पर विचार कर सकते हैं , लेकिन आप जो करने की कोशिश कर रहे हैं, उसके आधार पर यह सबसे अच्छा समाधान नहीं हो सकता है।
यह सभी देखें
संबंधित सवाल
उदाहरण
यहाँ केवल एक ही उदाहरण दिखाया गया है कि प्रतिबिंब क्या करने में सक्षम है।
import java.lang.reflect.*;
public class DumpFields {
public static void main(String[] args) {
inspect(String.class);
}
static <T> void inspect(Class<T> klazz) {
Field[] fields = klazz.getDeclaredFields();
System.out.printf("%d fields:%n", fields.length);
for (Field field : fields) {
System.out.printf("%s %s %s%n",
Modifier.toString(field.getModifiers()),
field.getType().getSimpleName(),
field.getName()
);
}
}
}
उपरोक्त स्निपेट के सभी घोषित क्षेत्रों का निरीक्षण करने के लिए प्रतिबिंब का उपयोग करता है class String
; यह निम्नलिखित उत्पादन का उत्पादन करता है:
7 fields:
private final char[] value
private final int offset
private final int count
private int hash
private static final long serialVersionUID
private static final ObjectStreamField[] serialPersistentFields
public static final Comparator CASE_INSENSITIVE_ORDER
प्रभावी जावा 2 संस्करण, आइटम 53: प्रतिबिंब के लिए इंटरफेस को प्राथमिकता दें
ये हैं पुस्तक के अंश:
एक को देखते हुए Class
वस्तु, आप प्राप्त कर सकते हैं Constructor
, Method
और Field
उदाहरणों कंस्ट्रक्टर्स, तरीके और वर्ग के क्षेत्रों का प्रतिनिधित्व। [वे] आपको उनके अंतर्निहित समकक्षों को प्रतिबिंबित करने में हेरफेर करते हैं । यह शक्ति, हालांकि, एक मूल्य पर आती है:
- आप संकलन-समय जाँच के सभी लाभ खो देते हैं।
- चिंतनशील पहुंच के लिए आवश्यक कोड अनाड़ी और क्रिया है।
- प्रदर्शन से ग्रस्त हैं।
एक नियम के रूप में, वस्तुओं को क्रम में सामान्य अनुप्रयोगों में प्रतिबिंबित नहीं किया जाना चाहिए।
कुछ परिष्कृत अनुप्रयोग हैं जिन्हें प्रतिबिंब की आवश्यकता होती है। उदाहरणों में [... उद्देश्य पर छोड़ दिया गया ...] शामिल हैं यदि आपको कोई संदेह है कि क्या आपका आवेदन इन श्रेणियों में से एक में आता है, तो यह संभव नहीं है।