为多个值定义抽象类方法参数Enum <e> </e>

时间:2012-07-05 00:15:44

标签: java enumeration abstract

我有一个问题。 如何为具有不同对象的多个静态类定义枚举类型为Enum?

示例:

public abstract class AbstractClass
{
    public Enum<?> AbstractMethod();
}

public class StaticClass extends AbstractClass
{
    public enum en
    {
        FOO3,
        FOO4
    }

    @Override
    public Enum<en>[] AbstractMethod()
    {
        return en.values();
    }
}

public class StaticClass2 extends AbstractClass
{

    public enum en
    {
        FOO1,
        FOO2
    }

    @Override
    public Enum<en>[] AbstractMethod()
    {
        return en.values();
    }
}

但是该代码会抛出错误: 方法public boolean AbstractMethod(Enum<ObjectX> en1) dosn在AbstractClass中存在(X是对象的数量)

这样做有效,但会抛出RawTypes警告:

public abstract class AbstractClass
{
    public Enum[] AbstractMethod();
}

public class StaticClass extends AbstractClass
{
    public enum en
    {
        FOO3,
        FOO4
    }

    @Override
    public Enum[] AbstractMethod()
    {
        return en.values();
    }
}

public class StaticClass2 extends AbstractClass
{

    public enum en
    {
        FOO1,
        FOO2
    }

    @Override
    public Enum[] AbstractMethod()
    {
        return en.values();
    }
}

1 个答案:

答案 0 :(得分:1)

这是你的意思吗?

枚举:

public enum Fruits {
    APPLE, ORANGE;
}

类:

public static abstract class Parent {

    public abstract <E extends Enum<?>> void printEnum(final E e);

}

public static class Child extends Parent {

    @Override
    public <E extends Enum<?>> void printEnum(final E e) {
        System.out.println(e.name());
    }

}

用法:

new Child().printEnum(Fruits.ORANGE); // Prints ORANGE