Wie bauen Schnittstelle für solche Enum
Frage
Ich habe folgendes Enum:
public enum Status implements StringEnum{
ONLINE("on"),OFFLINE("off");
private String status = null;
private Status(String status) {
this.status = status;
}
public String toString() {
return this.status;
}
public static Status find(String value) {
for(Status status : Status.values()) {
if(status.toString().equals(value)) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value );
}
}
Ist es möglich, StringEnum Schnittstelle um sicherzustellen, dass jeder ENUM hat finden () toString () und ein Konstruktor?
zu bauenDanke.
Lösung
Es ist nicht möglich, entweder Konstrukteure oder statische Methoden in einer Schnittstelle zu spezifizieren. Für eine gute, kurze Erklärung, Sie in diesem Artikel: keine statischen Methoden in Schnittstellen
Andere Tipps
Aufzählungen haben bereits eine valueOf () (Ihr find-Methode) Methode. Und „toString ()“ ist eine java.lang.Object Methode, so wird jede Klasse, die, mit anderen Worten, man kann es nicht erzwingen! Ich kann nicht den Wert der Durchsetzung Konstruktor sehen, da verschiedene Aufzählungen verschiedene Initialisierungen haben könnten.
Mit freundlichen Grüßen
- statische Methoden können nicht in Schnittstellen definiert werden
- Konstrukteure können nicht in Schnittstellen definiert werden
-
toString
injava.lang.Object
definiert, es in einer Schnittstelle erfordern, werden nie in einem Compiler-Fehler führen, wenn die Methode nicht definiert ist.
Warum wollen Sie den Konstruktor trotzdem erzwingen möchten? Sie können keine neue Instanzen von enum
s zur Laufzeit erstellen sowieso (es sei denn vielleicht über einigen Reflexionsmechanismus).