कस्टम प्रकार के लिए किसी भी नक्शा कास्ट-groovy

मैं "कास्ट करने के लिए एक रास्ता खोजने की कोशिश कर रहा हूँ कोई नक्शा मेरी कक्षा के उदाहरण के लिए "as" operator.in ग्रोवी का उपयोग करके, इस तरह:

import java.util.concurrent.ConcurrentHashMap;
class A {
def list = new ArrayList();
A( Map map ) {
for( e in map.entrySet() ) {
list.add( e.getKey );
list.add( e.getValue() );
}
}
};
def map = [ key1 : "value1", key2 : "value2" ] as ConcurrentHashMap;
def instA = map as A;
assert instA.list.containsAll( [ "key1", "value1", "key2", "value2" ] );

यह एक काल्पनिक उदाहरण है, लेकिन यह समस्या का सार दिखाता है।

उत्तर:

उत्तर № 1 के लिए 1

एक बार मैंने प्रश्न में अपने टाइपो को ठीक कर दिया, (और लूप के लिए अधिक गड़बड़ी समाधान के साथ प्रतिस्थापित किया), यह बस काम करने लगता है:

import java.util.concurrent.ConcurrentHashMap;

class A {
def list
A( Map map ) {
list = map.inject([]) { l, key, value -> l << key << value }
}
}

def map = [ key1 : "value1", key2 : "value2" ] as ConcurrentHashMap
def instA = map as A

assert instA.list == [ "key1", "value1", "key2", "value2" ]

संबंधित सवाल
सबसे लोकप्रिय