उदाहरण MethodHandle
वर्ग के वर्णन में दिखाया गया है पर WrongMethodTypeException फेंकता फेंकता निम्नलिखित विवरण के साथ बयान mh.invokeExact("daddy",'d','n')
के आह्वान में एक WrongMethodTypeException
: (CC)Ljava/lang/String; cannot be called with a different arity as ([Ljava/lang/Object;)Ljava/lang/Object;
।MethodHandle उदाहरण invokeExact कॉल
MethodHandle
ऑब्जेक्ट mh
में एक प्रतीकात्मक प्रकार वर्णनकर्ता है जो (CC)Ljava/lang/String
से संबंधित है। लेकिन जब हम mh.invokeExact("daddy",'d','n')
का आह्वान कर रहे हैं, तो तर्क: d
और n
Object
सरणी के रूप में पारित किए जाते हैं और फिर वे char
के तर्कों से मेल नहीं खाते हैं।
मुझे पता है कि मैं invokeExcat
या invoke
के बजाय invokeWithArguments
का उपयोग करके उपरोक्त समस्या को हल कर सकते हैं, लेकिन इस उदाहरण के रूप में जावा 7 एपीआई के MethodHandle
के विवरण में प्रस्तुत काम करने के लिए चाहिए था। इसके अलावा, invokeWithArguments
में invoke
/invokeExact
के संबंध में एक प्रदर्शन ओवरहेड है।
इस बग [इस उदाहरण का] कोड (http://stackoverflow.com/questions/14146570/calling-a-getter- साथ लिनक्स पर OpenJDK 1.7.0_07 साथ भी देखकर है इन-जावा-हालांकि प्रतिबिंब-क्या-सबसे तेजी से रास्ता करने के लिए बार-बार) –