Hi,
neue Sektion. Hier werden ein paar nerdy gotchas von Java mehr oder weniger korrekt dargestellt.
In Java werden btw. Primitivtypen by value übertragen.
Und Objekte als pass-by-
copy-of-reference.
Einfach als Notes-Agent in den Designer kopieren, starten und nachdenken.
import lotus.domino.*;
import java.util.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
int intValue = 10;
Vector vec = new Vector();
vec.add("main1");
vec.add("main2");
doStuffWithVector1(vec, intValue);
doStuffWithVector2(vec, intValue);
System.out.println("intValue=" + intValue);
Iterator it = vec.iterator();
while (it.hasNext()) {
System.out.println("Element=" + it.next());
}
} catch(Exception e) {
e.printStackTrace();
}
}
private void doStuffWithVector1 (Vector vec, int intValue) {
// wird in main erscheinen.
// eine Kopie eines Pointers auf die Speicheradresse wurde übertragen
// in den Vector in der Speicheradresse wurde ein neues Element hinzugefügt.
vec.add("sub1");
// keine Auswirkung auf maiin. Primitivtypen (z.B. boolean, int, long,) werden by value, also als Kopie übertragen.
intValue= 1;
}
private void doStuffWithVector2 (Vector vec, int intValue) {
vec = new Vector();
// wird nicht in main erscheinen.
// durch new zeigt Variable hier auf neuen Speicheradresse.
// Variable in main zeigt noch auf die alte Speicheradresse.
// Es wurde ja nur die Kopie der Speicheradresse übergeben.
// so ändert sich dadurch nix in Main.
vec.add("sub2");
// keine Auswirkung auf maiin. Primitivtypen (z.B. boolean, int, long,) werden by value, also als Kopie übertragen.
intValue = 2;
}
}