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?
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.
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.
Link dieser Seite https://www.talkteria.de/forum/topic-160285-10.html
Ähnliche Themen
Weitere interessante Themen
- Microsoft Aktie: Gute Anlage? 1084mal aufgerufen · 1 Antworten · Autor: Prügelmeister · Letzter Beitrag von Verbena
Forum: Geldanlage
- Microsoft Aktie: Gute Anlage?
- Rezept: Chili-Schokoladen-Sauce zu Geflügel 1814mal aufgerufen · 4 Antworten · Autor: urilemmi · Letzter Beitrag von EngelmitHerz
Forum: Essen & Trinken
- Rezept: Chili-Schokoladen-Sauce zu Geflügel
- Eine Unterhaltung führen, ohne Gegenfragen vom Gegenüber? 17558mal aufgerufen · 17 Antworten · Autor: Mareikel · Letzter Beitrag von Verbena
Forum: Alltägliches
- Eine Unterhaltung führen, ohne Gegenfragen vom Gegenüber?
- Pappteller statt normaler Teller 4127mal aufgerufen · 13 Antworten · Autor: Sippschaft · Letzter Beitrag von HaseHase
Forum: Essen & Trinken
- Pappteller statt normaler Teller