मेरे पास यह कोड है। यह क्यों काम नहीं करता है? (कार्य का अर्थ यह है कि यह प्रदर्शित करता है 3) मैं इसे कैसे ठीक कर सकता हूं?जावा एक्सेस प्रतिबिंब के माध्यम से इंटीजर कन्स्ट्रक्टर
Copy faield java.lang.Integer.<init>(java.lang.Integer)
java.lang.NoSuchMethodException: java.lang.Integer.<init>(java.lang.Integer)
at java.lang.Class.getConstructor0(Class.java:2818)
at java.lang.Class.getConstructor(Class.java:1723)
at Main.copy(Main.java:7)
at Main.main(Main.java:19)
3
null
धन्यवाद:
public class Main {
public static<V> V copy(V var){
try{
return (V) var.getClass().getConstructor(var.getClass()).newInstance(var);
}
catch(Exception e){
System.out.println("Copy faield " + e.getMessage() + " ");
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Integer a = new Integer(3);
Integer b = copy(a);
System.out.println(a);
System.out.println(b);
}
}
यह आउटपुट है! एक Integer
Integer.class
int.class
पूर्णांक के लिए निर्माता एक int
पैरामीटर लेता है, नहीं:
पूर्णांक केवल 'int' या' स्ट्रिंग' तर्क कंस्ट्रक्टर्स, कोई 'Integer' कॉपी निर्माता है । प्रतिबिंब के साथ, आप पैरामीटर को स्वचालित रूप से अनबॉक्स नहीं कर सकते हैं। –
फिर यह इंटीजर सी = नया इंटीजर (नया इंटीजर (5)) क्यों काम करता है; – yonutix
आप यहां एक सामान्य विधि में बहुत सारी धारणाएं कर रहे हैं। सभी वर्गों में एक कन्स्ट्रक्टर नहीं होगा जो एक ही कक्षा का मूल्य लेता है। – mikea