0

我有个问题。如何为具有不同对象的多个静态类定义 Enum 类型作为 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)在 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();
    }
}
4

1 回答 1

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
于 2012-07-05T03:51:49.450 回答