SomeInterfaceを実装する "enum"にSomeEnum1またはSomeEnum2を割り当てる方法を教えてください。私はそれがクラスでありenumではないので、インターフェイスを直接指定することはできません。インタフェースを使用するためにenumを使用するにはどうすればよいですか?
私は確かにこの作業を行うために構文の砂糖を指定しているが、私はそれを把握することはできません。
例:
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());
}
}
?その場合、 'Enum'を拡張するには' SomeInterface'が必要ですが、これは不可能です。 'SomeInterface'を' SomeAbstractClass'に置き換えても、すべての 'enum'が' java.lang.Enum'から拡張され、Javaが多重継承をサポートしていないので、それはまだできません。 –
'SomeEnum1またはSomeEnum2を「enum」に割り当てることはできますが、enumは拡張できません。 – user902383