2013-03-05 4 views
7

मैं लेगो मिंडस्टॉर्म एनएफटी रोबोट पर काम कर रहा हूं, जो जावा प्रतिबिंब का समर्थन नहीं करता है।प्रतिबिंब के बिना जावा क्रमबद्धता कैसे करें?

किसी कारण से (एक सिम्युलेटर और एक वास्तविक दिमाग की समानांतर रचना) हम जावा ऑब्जेक्ट्स का आदान-प्रदान करने के लिए सीरियलाइजेशन का उपयोग करना चाहते हैं।

समस्या यह है कि क्रमबद्धता प्रतिबिंब का उपयोग करती है, जो दिमाग पर JVM का समर्थन नहीं करता है।

कोई विचार?

मुझे this page on Zwong.de मिला, लेकिन स्रोत कोड हटा दिया गया है।

+1

पुरुष का ट्विटर नाम पर सूचीबद्ध है बिना बनाओ वह साइट (@ कॉर्नेलियुशल्ड) - उसे पिंग करने और पूछने के लायक हो सकती है। आम तौर पर ये चीजें डिज़ाइन से अधिक दुर्घटना से गायब हो जाती हैं। – berry120

उत्तर

1

मेरा मानना ​​है कि Kryo क्रमिक वस्तुओं के प्रतिबिंब-कम तत्कालता का समर्थन करता है। अपने मुख पृष्ठ पर एक त्वरित दृष्टि यह पुष्टि करने के लिए लगता है:

जब ReflectASM या प्रतिबिंब नहीं किया जा सकता, Kryo एक वर्ग के उदाहरण बनाने को संभालने के लिए एक InstantiatorStrategy उपयोग करने के लिए विन्यस्त किया जा सकता। Objenesis StdInstantiatorStrategy प्रदान करता है जो किसी भी कन्स्ट्रक्टर को कॉल किए बिना कक्षा का उदाहरण बनाने के लिए जेवीएम विशिष्ट एपीआई का उपयोग करता है। यह कई JVMs पर काम करता है।

ऐसा नहीं है कि से लगता है कि आप अपने खुद के InstantiatorStrategy, क्योंकि मुझे यकीन है कि मानक एक NXT JVM के लिए समर्थन होगा नहीं कर रहा हूँ बनाने की आवश्यकता होगी - लायक एक यद्यपि कोशिश करो! मैंने इसे स्वयं नहीं किया है, लेकिन ऐसा लगता है कि यह सिद्धांत में संभव होना चाहिए।

0

मुझे दो संभावित लीड मिलीं। उम्मीद है कि ये आपके लिए कुछ मददगार हैं।

1) Doing Java serialization without reflection

2) xml serialization generator for java without using reflection

+1

आपके पहले उत्तर का स्रोत कोड ऑफ़लाइन है, मैंने पहले ही अपने प्रश्न में इसका उल्लेख किया है। –

+0

मैं Google कैश किए गए संस्करण को लोड करने में कामयाब रहा, जो मैंने लिंक किया था। यह संदिग्ध लगता है कि आप अभी भी स्रोत कोड डाउनलोड कर सकते हैं। शायद सर्वर जल्द ही बैक अप लिया जाएगा। –

+2

कृपया [उत्तर] और [faq] पर जाएं। आपका जवाब स्वयं निहित होना चाहिए। सोचने के तरीके को प्रतिबिंबित करने के लिए कृपया अपना उत्तर सुधारें। –

0

क्रमबद्धता और अक्रमांकन बस लेखन का एक तरीका और एक वस्तु को पढ़ने के लिए है। आप हमेशा अपनी खुद की विधियां लिख सकते हैं जो सभी ऑब्जेक्ट डेटा को स्ट्रिंग/फ़ाइल/स्ट्रीम से/लिखते हैं।

इसके अलावा, कस्टम क्रमांकन तरीकों, विशेष रूप से इन बाइनरी डेटा का उपयोग कर, इन द्वारा प्रदान की, अर्थात्।, Serializable से अक्सर कम समय, स्मृति और प्रसंस्करण शक्ति उपभोग कर रहे हैं।

1

अपनी कक्षाओं को लागू Externalizable, तो ObjectOuputStream.writeObject()/readObject() अपने वस्तुओं directy पर writeExternal (ObjectOutput बाहर)/readExternal (ObjectInput) लागू करेगा, प्रतिबिंब का उपयोग

+0

हम बाहरी इंटरफ़ेस के अस्तित्व के बारे में नहीं जानते थे, लेकिन यह वादा करता है। समस्या यह है कि, लेजोस जावा माइंडस्टॉर्म एपीआई ऑब्जेक्टऑटपुटस्ट्रीम या ऑब्जेक्ट इनपुटपुट स्ट्रीम प्रदान नहीं करता है। हम उन वस्तुओं के बिना बाहरी उपयोग कैसे कर सकते हैं? या क्या हमें प्रतिबिंब का उपयोग किए बिना अपनी कक्षाओं को लागू करना चाहिए? –

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