2010-12-16 12 views
6

में जावा जेनेरिक कक्षाओं का उपयोग करना क्या मैटलैब में पैरामीटरयुक्त वर्ग बनाना संभव है? उदाहरण के लिए जावा में मैं ArrayList<String> myList = new ArrayList<String>() कह सकता था। मैंने myList = java.util.ArrayList<String>() को आजमाया है, लेकिन यह केवल "अप्रत्याशित ब्रांडेसिस या ब्रैकेट" कहने में त्रुटि देता है। मैं वास्तव में अपने स्वयं के पैरामीटरयुक्त वर्गों का उपयोग करना चाहता हूं, लेकिन अगर मैं इसके लिए वाक्यविन्यास प्राप्त कर सकता हूं, तो यह पर्याप्त होना चाहिए।मैटलैब

उत्तर

5

आप Matlab में एक parametrized जावा वर्ग का दृष्टांत नहीं कर सकते। ऐसा इसलिए है क्योंकि मैटलैब एक व्याख्या की गई भाषा है। तो, अपने उदाहरण में, जब आप

myList = java.util.ArrayList<String>() 

इस कोड को तुरंत व्याख्या की है और चलाने के मैटलैब द्वारा (और जावा कोड संकलित) का प्रयास करें। लेकिन क्योंकि जावा में Type Erasure है मेरी सूची के लिए सभी प्रकार की जानकारी तुरंत खो जाती है। इसका अर्थ है मैटलैब सिंटैक्स प्रकार पैरामीटर के संदर्भ में कोई अर्थ नहीं है - इसलिए वे वाक्य रचनात्मक रूप से अमान्य हैं।

+0

ठीक है, मुझे डर था कि वह मामला था, लेकिन मैं यह सुनिश्चित करना चाहता था। – Sam

+0

तो अगर मैटलैब में एक ऐरेलिस्ट बनाता हूं, तो क्या इसमें मैटलैब ऑब्जेक्ट जोड़ना संभव है? (हर बार जब मैं किसी ऑब्जेक्ट को जोड़ने का प्रयास करता हूं, तो मुझे कक्षा 'java.util.ArrayList' के लिए मिलान किए गए मिलान हस्ताक्षर के साथ 'कोई विधि' जोड़ें 'नहीं मिलता है।) – dinosaur

1

मै मैटलैब में विशेषज्ञ नहीं हूं लेकिन मैं जावा में कुछ समझता हूं।

  1. जेनेरिक्स का समर्थन कर रहे के बाद से जावा 5
  2. जेनेरिक्स संकलन समय विशेषता है। उन्हें "erasures" भी कहा जाता है।

इसका मतलब है कि

  1. चेक जो जावा आपके सिस्टम पर स्थापित किया है और matlab द्वारा प्रयोग किया जाता है। शायद यह जावा 1.4 का उपयोग करने के लिए कॉन्फ़िगर किया गया है?
  2. क्या आप अन्य आईडीई (मैटलैब नहीं) का उपयोग कर कोड लिख सकते हैं, इसे संकलित कर सकते हैं और फिर मैटलैब में उपयोग कर सकते हैं? शायद यह आपकी समस्या को ठीक करेगा।

नीचे दिए गए लिंक शायद आप मदद कर सकता है: http://www.mathworks.com/support/solutions/en/data/1-1812J/

+0

बिंदु संख्या दो में उल्लिखित आपका दृष्टिकोण काम कर रहा है। – zellus

5

कर्ट सही है, हालांकि एक वर्कअराउंड आपके स्वयं के जावा क्लास को परिभाषित करना होगा जो पैरामीटरकृत नहीं है। public class MyList extends ArrayList<String> { }। फिर matlab में आप myList = MyList() लिख सकते हैं और आपको लगभग सभी विधि हस्ताक्षर ArrayList<String> के रूप में प्राप्त होंगे।