Kapselung von Enums?

Status
Nicht offen für weitere Antworten.

neurox

Aktives Mitglied
Hallo allerseits,

ich habe eine Verständnisproblem bei den enums.

Bisher habe ich dort, wo man eigentlich enums einsetzen sollte mir Integer-Werten gerarbeitet. Jetzt möchte ich es mal mit enums versuchen und stehe wie ein Ochs' vorm' Berg.

Folgendes Problem:

Ich möchte in einem Interface getter- und setter-Methode für den Status eines Objektes zuschreiben. Es gibt vier verschiedene Zustände (PENDING, ACTIVE, SUSPENDED, DONE). Naiv, wie ich bin, habe ich diese in einem enum-Objekt definiert:

Java:
public interface FaxCampaign {
	public enum Status {PENDING, ACTIVE, SUSPENDED, DONE};
	
	public int getStatus();
	public void setStatus(int status);
}

1. Ist das überhaupt richtig so?
2. Wie Implementiere ich die Methoden überhaupt? Eine Variable vom Typ Status oder enum kann ich in der implementierenden Klassen wohl schlecht an legen, oder?

Damit ihr wisst, was ich überhaupt vor habe, so habe ich das bisher gelöst:

Java:
public interface FaxCampaign {
	public static final int PENDING = 1;
	public static final int ACTIVE = 2;
	public static final int SUSPENDED = 3;
	public static final int DONE = 4;
	
	public int getStatus();
	public void setStatus(int status);
}

... und dann wie folgt implementiert:

Java:
public class FaxCampaignImpl implements FaxCampaign {
	private int status;

	public int getStatus() {
		return status;
	}
	public void setStatus(int status) {
		this.status = status;
	}
	
}

Es wäre nett, wenn mir mal jemand sagen könnte, was ich hier falsch verstanden habe.

Grüße
neurox
 
Du solltest nicht mehr mit int Arbeiten, wenn du eine Enum benutzt.

Wenn enum, dann so:
Java:
public interface Test {
	
	public enum Status { OK, BAD; }
	
	Status getStatus();
	void setStatus(Status status);
}

EDIT:
Eine enum kann auch wie ein Klasse in einem File liegen.

>2. Wie Implementiere ich die Methoden überhaupt?

Normal, wie alle anderen auch.

>Eine Variable vom Typ Status oder enum kann ich in der implementierenden Klassen wohl schlecht an legen, oder?

Normal, wie alle anderen Variablen auch. ;-)
 
Benutz einfach das enum in der Impl-Klasse:
Java:
class FaxCampaignImpl implements FaxCampaign {
    private Status status;
 
    public Status getStatus() {
        return status;
    }
    public void setStatus(Status status) {
        this.status = status;
    }
    
}

interface FaxCampaign {
    public enum Status {PENDING, ACTIVE, SUSPENDED, DONE};
    
    public Status getStatus();
    public void setStatus(Status status);
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben