आप Generic methods
public <T> void insertData(Class<T> clazz, String fileName) {
List<T> newList = new ArrayList<>();
}
उपयोग कर सकते हैं, लेकिन अगर आप इस अनुबंध insertData(String className, String fileName)
का उपयोग करना चाहिए, आप जेनरिक उपयोग नहीं कर सकते क्योंकि सूची आइटम के प्रकार के जावा द्वारा संकलन समय में हल नहीं किया जा सकता है।
इस मामले तुम सब पर जेनरिक का उपयोग कर सकते नहीं करते हैं और प्रतिबिंब का उपयोग प्रकार की जांच करने के लिए इससे पहले कि आप सूची में डाल दिया है:
public void insertData(String className, String fileName) {
List newList = new ArrayList();
Class clazz;
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e); // provide proper handling of ClassNotFoundException
}
Object a1 = getSomeObjectFromSomewhere();
if (clazz.isInstance(a1)) {
newList.add(a1);
}
// some additional code
}
लेकिन वर्ग की जानकारी के बिना आप कर रहे हैं सक्षम उपयोग सिर्फ Object
क्योंकि आप अपने ऑब्जेक्ट में अज्ञात क्लास पर अपनी ऑब्जेक्ट नहीं डाली जा सकती है।
स्रोत
2017-02-06 14:10:06
यह 'स्ट्रिंग className' होने के लिए है? यदि आप वास्तविक 'क्लास' ऑब्जेक्ट को 'insertData (exampleClass.class, fileName)' में पारित कर सकते हैं तो यह आसान होगा। – nickb
मुझे नहीं पता कि मैं किस कक्षा में गुजर रहा हूं। – Greymarch