Main.java
package sample;
public class Main {
public static void main(String[] args) throws Exception {
method(Hoge.HOGE);
method(Fuga.FUGA); // コンパイルエラー
method(new Piyo()); // コンパイルエラー
}
public static <T extends Enum<?> & MyInterface> void method(T t) {}
public static interface MyInterface {}
public static enum Hoge implements MyInterface {HOGE}
public static enum Fuga {FUGA}
public static class Piyo implements MyInterface {};
}
全ての enum
は java.lang.Enum
のサブクラスになるので、 <T extends Enum<?>>
として、 & MyInterface
を追加することでインターフェースを限定させられる。