2016-03-26 3 views
0

Ich habe eine folgende Codes, gibt es eine nette Möglichkeit, Nummer in State enum zu zählen ??Wie kann ich den Methodenaufruf zählen und die Anfangs- bis Endnummer angeben?

Ich möchte StateHolders Funktion State Enum verschieben, aber ich weiß nicht, wie Startnummer zu Endnummer entsprechen.

public enum State{ 
    START("start"), 
    END("end"); 

    public String msg; 

    private State(String msg){ 
     this.msg = msg; 
    }  
} 

public class StateHolder{ 

    private static AtomicInteger counter = new AtomicInteger(); 
    private int current; 

    public String start(){ 
     current = counter.getAndIncrement(); 
     return State.START.msg + " " + current; 
    } 

    public String end(){ 
     return State.END.msg + " " + current; 
    } 
} 


public static void main(String[] args){ 

    StateHolder sh1 = new StateHolder(); 
    StateHolder sh2 = new StateHolder(); 

    System.out.println(sh1.start); // start 0 
    System.out.println(sh2.start); // start 1 
    System.out.println(sh1.end); // end 0 
    System.out.println(sh2.end); // end 1 

} 

Antwort

0

Was dazu:

public enum State { 
... 

    private static AtomicInteger counter = new AtomicInteger(); 

    public AtomicInteger counter() { 
     return counter; 
    } 
... 

}

public class StateHolder { 

    private int current; 

    public String start() { 
     current = State.START.counter().getAndIncrement(); 
     return State.START.msg + " " + current; 
    } 
... 
} 
Verwandte Themen