Java: Methode auf erstmaliges Ausführen überprüfen

vom 25.04.2011, 09:43 Uhr

berndorin hat geschrieben:Du kannst die static Variable auch in deiner aktuellen Klasse verwenden.

Dazu nur ein Tipp: Mach die Variable private um das Geheimnisprinzip einzuhalten.

Dies müsste dann etwa so aussehen:
Code: Alles auswählen
 
public class yourapplication {
  private static int repeat=0;
  public int dostuff() {
     int dostuff=0;
     if (this.repeat==0)
     {
         this.repeat=1;
         dostuff=123;
     }
     else
     {
         dostuff=456;
     }
     return dostuff;
  }
}


Ohne jetzt deinen Code noch einmal auszuprobieren würde ich sagen, dass dies so nicht funktionieren wird. Weiter oben habe ich ja dann schon die Idee geäußert, dass man die Variable ja einfach auf static setzen kann, sodass dann keine zusätzliche Klasse benötigt wird. Aber wie ja auch schon gesagt wurde, wird das dann nicht funktionieren, was ich mittlerweile auch so bestätigen kann. Glaubst du denn wirklich, dass alleine durch den Zusatz private hier noch etwas ändern wird und die Methode dann so dennoch funktioniert?

» BrilleWilli » Beiträge: 1810 » Talkpoints: 14,07 » Auszeichnung für 1000 Beiträge



Habe mir gerade einmal ein Beispielprojekt erstellt:

Hauptprogramm:

Code: Alles auswählen
public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Test1 blubb=new Test1();
       System.out.println(blubb.dostuff());
       System.out.println(blubb.dostuff());
       System.out.println(blubb.dostuff());
    }
}

Klasse Test1:
Code: Alles auswählen
public class Test1 {
   
    private int counter=0;
    public int dostuff()
    {     
        if(counter++==0)
        {
            return 123;
           
        }
        else   
        {
            return 456;
        }
    }   
}


Habe in der Klasse Test1 die Variable auf static gesetzt und das Ergebnis blieb gleich. Bei static kommt es auf den Aufruf an wenn immer weider einer neue Klasse erstellt wird, muss man static nehmen, da static eine Klassenvariable ist und in allen Klassen gleich ist. Wenn man nur eine Klasse hat, reicht eine ganz normale als private deklarierte Variable.

» berndorin » Beiträge: 7 » Talkpoints: 1,77 »


Hallo,
du hast einfach nur etwas falsch interpretiert. Ich bin schon sehr gut und erfahren in der Programmierung mit JAVA. Du hast ja das "Problem", dass die Variable nicht konstant ist bzw. lokal. Du sprichst ja auch von "lokalen Variablen". Wenn du globale Variablen verwendest, gibt es keine Probleme.

Mein Vorschlag:

Code: Alles auswählen
// Klasse Testklasse wird erzeugt
public class Testklasse{
// Datenfelder werden deklariert
// boolean Variable, je nachdem, ob die Methode aufgerufen wurde.
public static boolean aufgerufen;

// Konstruktor der Klasse
public Testklasse(){
// Variable wird Anfangszustand zugewiesen
aufgerufen = false;
}
// Methode
public static void tuEtwas(){
aufgerufen = true;
doSomething();
}
}


Bei Fragen bitte einfach melden.

Benutzeravatar

» Big-D. » Beiträge: 1234 » Talkpoints: -10,32 » Auszeichnung für 1000 Beiträge



Ähnliche Themen

Weitere interessante Themen

^