लोग कह रहे हैं कि यह असंभव है, और सत्य है, लेकिन यदि आप प्रतिबिंब एपीआई का उपयोग करते हैं तो आप इसके करीब कुछ कर सकते हैं।
यहां बताया गया है कि आप इसे कैसे कर सकते हैं।
आपके पास एक कक्षा है जो यह करती है।
public class B {
Class a
public static Class getA(){
return a;
}
}
तो
blah कॉल करने के लिए कार्य करें:
try{
Method m = B.getA().getDeclaredMethod("blah");
m.invoke(null);//for a static method, you can invoke on null
}
Catch(Exception e){
// see documentation for list of exceptions
}
तो, क्यों आप ऐसा करना चाहेगा? खैर, अगर आप इसे इस तरह करते हैं तो आप कक्षा ए को बदल सकते हैं तो GetA() ए, बी, सी या डी को वापस कर सकता है, सभी अलग-अलग blah() फ़ंक्शंस के साथ। मुझे सच में यकीन नहीं है कि कौन सा उद्देश्य होगा, लेकिन यदि आप इसे करना चाहते हैं, तो आप कर सकते हैं।
देखें: Class.getDeclaredMethod() और Method.invoke() अधिक जानकारी के लिए।
मैं इस प्रयास नहीं किया है, तो आप कुछ फेरबदल करने की ज़रूरत हो सकती है।
स्रोत
2009-12-19 13:20:03
या तो http://gbracha.blogspot.com/2008/02/cutting-out-static.html पढ़ने के लिए या सी जानने के लिए और समारोह संकेत का उपयोग करें। –
इस तरह का कोई जवाब नहीं है ... स्कैला स्थैतिक तरीकों के स्थान पर सिंगलटन ऑब्जेक्ट्स का उपयोग करता है (जो वास्तव में बहुत ऑब्जेक्ट उन्मुख नहीं हैं)। यदि आप स्कैला का उपयोग करना चाहते थे तो आप बहुत अधिक * कर सकते हैं * इस तरह की चीज –