के साथ कक्षा से नया उदाहरण बनाना मेरे पास ऐसी स्थिति है जहां मेरी जावा क्लास को कुछ प्रकार की वस्तुओं का एक टन बनाने की आवश्यकता है। मैं पैरामीटर के रूप में बनाए गए ऑब्जेक्ट्स के वर्ग का नाम देना चाहता हूं। इसके अलावा, मुझे बनाए गए वर्ग को अपने कन्स्ट्रक्टर में पैरामीटर देना होगा। मेरे पासकन्स्ट्रक्टर पैरामीटर
class Compressor {
Class ccos;
public Compressor(Class ccos) {
this.ccos = ccos;
}
public int getCompressedSize(byte[] array) {
OutputStream os = new ByteArrayOutputStream();
// the following doesn't work because ccos would need os as its constructor's parameter
OutputStream cos = (OutputStream) ccos.newInstance();
// ..
}
}
क्या आपके पास कोई विचार है कि मैं इसका समाधान कैसे कर सकता हूं?
संपादित करें:
यह एक अनुसंधान परियोजना जहाँ हम कई अलग अलग आदानों के साथ कई अलग अलग कम्प्रेसर के प्रदर्शन का मूल्यांकन करने की जरूरत है का हिस्सा है। Class ccos
या तो जावा की मानक लाइब्रेरी, अपाचे कंप्रेस कॉमन्स या lzma-java से संकुचित OutputStream
है।
वर्तमान में मेरे पास निम्नलिखित कार्य हैं जो ठीक काम करने लगते हैं। अन्य विचारों का स्वागत है।
OutputStream os = new ByteArrayOutputStream();
OutputStream compressedOut = (OutputStream) ccos.getConstructor(OutputStream.class).newInstance(os);
final InputStream sourceIn = new ByteArrayInputStream(array);
क्यों आपको बताने के लिए की आवश्यकता है 'Compressor' वस्तुओं की किस तरह बनाने के लिए? यहां किस तरह के वर्गों का उपयोग किया जाएगा? –
क्या आपने इसे प्रतिबिंब के साथ हैक करने के बजाय इसके लिए एक अमूर्त कारखाने का उपयोग करने पर विचार किया है? –
कुछ और जानकारी जोड़ने के लिए संपादित – lhahne