私は列挙型をメソッドに渡し、その列挙型の値を反復処理し、その列挙型がそれらのすべての値に実装するメソッドを呼び出そうとしています。「value.getAlias()」の部分でコンパイラエラーが発生します。「メソッドgetAlias()はタイプEに対して未定義です」と表示されます。EがHasAliasインターフェースを実装していることを示しようとしましたが、機能していないようです。これは可能ですか?もしそうなら、私が望むことをするために以下のコードをどのように修正しますか?以下のコードは、私のプロセスを示すことだけを目的としています。列挙型の値の名前を出力するだけでなく、問題を示すことを目的としています。
public interface HasAlias{ String getAlias(); };
public enum Letters implements HasAlias
{
A("The letter A"),
B("The letter B");
private final String alias;
public String getAlias(){return alias;}
public Letters(String alias)
{
this.alias = alias;
}
}
public enum Numbers implements HasAlias
{
ONE("The number one"),
TWO("The number two");
private final String alias;
public String getAlias(){return alias;}
public Letters(String alias)
{
this.alias = alias;
}
}
public class Identifier
{
public <E extends Enum<? extends HasAlias>> void identify(Class<E> enumClass)
{
for(E value : enumClass.getEnumConstants())
{
System.out.println(value.getAlias());
}
}
}