Wie kann ich SomeEnum1 oder SomeEnum2 einer "enum" zuweisen, die SomeInterface implementiert? Ich kann die Schnittstelle nicht direkt angeben, da es sich um eine Klasse und nicht um eine Enumeration handelt.Wie benutzt man eine Enumeration, wie man eine Schnittstelle benutzen würde?
Ich bin sicher, es gibt eine Angabe syntaktischen Zucker, um diese Arbeit zu machen, aber ich kann es nicht herausfinden.
Beispiel:
public class Main {
public interface SomeInterface {
public String doSomething();
}
public enum SomeEnum1 implements SomeInterface {
something1;
@Override
public String doSomething() {
return "SomeEnum1";
}
}
public enum SomeEnum2 implements SomeInterface {
something2;
@Override
public String doSomething() {
return "SomeEnum2";
}
}
public static void main(String[] args) {
// Works but not polymorphic
SomeEnum1 e1 = SomeEnum1.something1;
System.out.println(e1.name() + " " + e1.doSomething());
// Not an enum
// SomeInterface e2 = SomeEnum1.something1;
// System.out.println(e2.name() + " " + e2.doSomething());
// Bounds mismatch
// Enum<SomeInterface> e3 = SomeEnum1.something1;
// System.out.println(e3.name() + " " + e3.doSomething());
}
}
so möchten Sie 'SomeInterface' als' enum' benutzen? In diesem Fall benötigen Sie 'SomeInterface', um' Enum' zu erweitern, was nicht möglich ist. Auch wenn Sie 'SomeInterface' durch' SomeAbstractClass' ersetzt haben, ist dies immer noch nicht möglich, da alle 'Enum's von' java.lang.Enum' ausgehen und Java keine Mehrfachvererbung unterstützt. –
'Wie kann ich SomeEnum1 oder SomeEnum2 zu einem" Enum "zuweisen? Sie können nicht, enums kann nicht erweitert werden – user902383