Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Hernan Cortez am 30.05.04 - 00:16:22

Titel: wacko practices
Beitrag von: Hernan Cortez am 30.05.04 - 00:16:22
Hi,

neue Sektion. Hier werden ein paar nerdy gotchas von Java mehr oder weniger korrekt dargestellt.  ;D

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.

Code
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;   
   }
}