HashMap reportParameters = new HashMap();
reportParameters.put("selectName", "BALL");
I understand it to mean that I create a new HashMap object called
"reportParameters". It is basically a container into which I can put
key/value pairs. So, after creating a new "empty" object, I add the
key/value pair I want to assign using "put".
Correct. That's what it does. However, consider the following Java code:
Consider this Java code:
HashMap reportParameters = new HashMap();
Object retval = reportParameters.put("selectName", "BALL");
If you displayed the value of 'retval' after running this code, you'd
find that it's set to null, because that's what the 'put' method is
returning... it's returning null. For some reason you seem to want to
blame the RPG prototypes for this behavior, but it's not the RPG
prototypes fault, because the Java code has the same exact result. The
only difference was, you weren't checking the return value from the put
method (until I added the code, above)
The assignment of the key/value pairs is what I am after so this
lReParam = new_jMap();
...and it does.
is supposed to create the object, and this code:
lkey = new_String('selectName');
lvalue = new_String('BALL');
lReParam = rre_jMap_put(lReParam:lkey:lvalue);
Okay, let's modify your RPG code slightly to look like this:
lkey = new_String('selectName');
lvalue = new_String('BALL');
retval = rre_jMap_put(lReParam:lkey:lvalue);
Assuming that retval is defined as like(jObject) this code does exactly
the same thing as the Java code, above. If you check the value of
'retval' you'll see that it's set to *NULL.
What I didn't notice when I read your previous message (but I see it
now) is that you're replaces lReParam with the return value from the put
method. i.e. you're doing this:
lReParam = rre_jMap_put(lReParam:lkey:lvalue);
This will, quite correctly, assign the key & value to the hash map.
However, and here's the problem, it then sets the hashmap object to the
return value of the put method, which will be *NULL -- so you're
effectively discarding the hashmap.
If you wanted to do the same thing in Java, you'd be doing this:
HashMap lReParam = new HashMap();
lReParam = lReParam.put("selectName", "BALL");
See what I mean? You're replacing the value of lReParam with whatever
the 'put' method returns. The put method will return the prior value of
"selectName", but since there was no prior value, it'll return null.
Effectively, you're wiping out the value of lReParam.
If you want your RPG code to work like the Java code, do this instead:
lReParam = new_jMap();
lkey = new_String('selectName');
lvalue = new_String('BALL');
rre_jMap_put(lReParam:lkey:lvalue);
You don't want to assign the return value from rre_jMap_put to lReParam,
because if you do that, you're setting lReParam to null.
As an Amazon Associate we earn from qualifying purchases.