2012-12-22 12 views
7

में कोड करने के लिए संभव डुप्लिकेट:
How do I invoke a java method when given the method name as a string?
How do I programmatically compile and instantiate a Java class?Convert स्ट्रिंग जावा

मैं एक समारोह है:

fun1() { 
    System.out.print("hello"); 
} 

मैं से एक स्ट्रिंग में पढ़ना चाहते हैं तो उपयोगकर्ता या फ़ाइल, और यदि स्ट्रिंग "fun1()" प्रतीत होता है, मैं fun1 कॉल करूंगा।

मैं इसे स्विच स्टेटमेंट के साथ नहीं करना चाहता, क्योंकि मेरे पास बहुत सारे फ़ंक्शन हैं।

स्ट्रिंग का उपयोग करके फ़ंक्शन को कॉल करने का कोई तरीका है?

+5

आमतौर पर, यह एक बुरा विचार है। आप इसके साथ पूरा करने का लक्ष्य क्या कर रहे हैं? – Makoto

+1

मुझे लगता है कि यह इस तरह के समान दृष्टिकोण होगा; http://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string – Steve101

उत्तर

1

आप इस प्रतिबिंब का उपयोग कर सकते हैं प्राप्त कर सकते हैं। लेकिन आपके द्वारा प्रदान की गई विधि जावा नहीं है। वापसी का प्रकार गुम है। तुम ऐसा क्यों करना चाहते हो? यहाँ एक कड़ी है, मामले में आप यह तरीका अपनाते हैं: invoking a static method using reflections

5

आप सकता है उपयोग यहाँ प्रतिबिंब:

Method method = MyClass.class.getDeclaredMethod("fun1", new Class[] {}); 
method.invoke(this, null); 

पहले विचार करें, लेकिन यदि आप यह प्रतिबिंब का उपयोग तो कर बच सकते हैं। प्रतिबिंब इसके साथ कई नुकसान लाता है जैसे कि स्वचालित रूप से बेकार करने वाले स्वचालित रिफैक्टरिंग टूल जैसे डीबग करना और प्रतिपादन करना मुश्किल होता है।

अपने डिज़ाइन पर पुनर्विचार करें; आप शायद कक्षाओं के क्लीनर अपघटन, बेहतर बहुलक, आदि के साथ समस्या को हल कर सकते हैं

+0

बहुत बहुत शुक्रिया। .. –

संबंधित मुद्दे