soweit ist mir das klar meine Frage dazu wie kann ich denn den Wert von dem intObj später nach dem erstellen ändern
gar nicht. java.lang.Integer gehört genauso wie javal.lang.Long, java.lang.Float, etc. zu den sogenannnten Wrapper-Klassen (für primitive Datentypen). Diese Wrappers sind inmutable (unveränderlich, können ihren Wert nicht ändern).
Wenn du in einer Schleife immer einen neuen Wert zuweisen würdest, hättest du auch komische Effekte.
Integer intSoGehtsNicht = new Integer(3);
DocumentA.setItemValueInteger("feld"; intSoGehtsNicht);
intSoGehtsNicht.add(1); // Methode frei von mir erfunden, geht nicht s. inmutable
DocumentB.setItemValueInteger("feld"; intSoGehtsNicht);
// in diesem Fall hätte nun auch theoretisch in DocumentA das Feld auf den Wert 4 gesetzt werden. (wie gesagt das geht nicht, weil inmutable).
Java geht mit den primitiven Datentypen wie
int i = 4;
float i = 2.0f;
double d = 2.0;
short s = (short) 4;
// etc.
einen Kompromiß gegen die Objekt-Orientierung ein, den es so in SmallTalk oder wenn ich mich recht erinnere auch in C# nicht gibt. Die primitiven werden nicht im Heap, sondern in öhem (nicht so sicher) Registern. Das bringt leichte Performance-Gewinne. Wichtiger für diese Design-Entscheidung von den Sprachkonzipierern war es aber, den Einstieg in die Sprache für nicht OO-Leute zu erleichtern.
Ich möchte in einer schleife in der ich mehrer docs durchlaufe nicht jedesmal ein neues intobj erstellen.
Das mußt du aber und ist auch nicht so schlimm. Ein Integer-Objekt nimmt nur sehr wenig Heap-Speicher in Anspruch.
Ich würde das in deiner Schleife das ungefähr so schreiben:
for (int i = 0; i < 5; i++) {
DocumentA.setItemValueInteger("feld"; new Integer(i));
/* das wäre gewissermassen aus Sicht deines Agenten ein "anonymes Objekt". Ein Objekt, das keiner Instanzvariable zugewiesen ist. Zumindest nicht in deinem code, was das (Notes)Document-Objekt intern damit macht, ist natürlich eine andere Frage, aber im Prinzip auch für dich nicht so wichtig. */
}
Du könntest auch auf die Idee kommen das so zu machen:
Integer myInt = null;
for (int i = 0; i < 5; i++) {
myInt = new Integer(i);
DocumentA.setItemValueInteger("feld"; myInt);
}
Damit würdest du aber genauso viele Objekte erzeugen wie im Beispiel davor, nur eben immer die gleiche Objekt-Referenz verwenden. Heap-Speicher spart man so nicht. Eine begriffliche Trennung zwischen Variable und Objekt ist IMHO wichtig. Die Variable (also myInt) hält nur eine Referenz auf das Objekt. Das Objekt liegt irgendwo als 0 und 1 im Heap-Speicher vor.
Um vom Integer-Objekt den int Wert zurückzubekommen, geht einfach:
Integer myInt = new Integer(4);
int val = myInt.intValue();
Benutze
nicht die Notes-Dokumentation. Besorg dir besser dieses Teil:
http://java.sun.com/j2se/1.4.2/docs/api/index.htmlWürd mir auch direkt die 1.4.2-Api-Doc runterladen. Notes hat zwar nur 1.3. Aber:
1. wird das im Api-Doc gekennzeichnet, wenn eine Klasse/Methode nur in 1.4 vorhanden ist. Und die Chance das du von den 10.000 oder so Klassen eine erwischst, die es erst ab 1.4 gibt, sehr gering (hört sich komisch an, ist aber so).
Hier ist link für download:
http://java.sun.com/j2se/1.4.2/download.html#docsWenn du schon mal dabei bist, kannst du gleichzeitig auch das hier downloaden:
http://java.sun.com/docs/books/tutorial/information/download.html(einfach tutorial.zip. Das Rest der da noch angeboten wird, sind nur Teilmengen von tutorial.zip).
(dort wo j2se v1.4.2 Documentation steht.
Im downgeloadeten Zeug gibt es dann ein File Index. Das öffnen. Dann auf 1. Link hinter Api & Language Documentation. Das dann bookmarken.
Jeder hat dieses Teil und nach einer gewissen Eingewöhnungszeit ist es sehr übersichtlich. Java lebt von seiner groooßen Klassenbibliothek.
Gruß Axel
(weitere Infos in Kapitel 10.2 des Handbuchs der Javaprogrammierung -->
www.javabuch.de, freies e-book).