我有一个像这样的枚举类:

public enum EArea
{
    DIRECTLANE,
    TURNLEFTLANE,
    INTERSECTION,
    SIDEWALK,
    FORBIDDEN;
}


我想根据另一个类中该枚举的值构建AtomicRefrence:

public class CArea<T extends Enum<?>>
{
    private final AtomicReference<T> type;

    public CArea( ... ) //what should I put here?
    {
        type = new AtomicReference<T>( ... ); // and here?
    }
}


我想稍后再做:

CArea area1 = new CArea( EArea.SIDEWALK );
CArea area2 = new CArea( EArea.DIRECTLANE );


但是我不知道如何在一般方法(这里是构造函数)中引用枚举的项。

最佳答案

如注释中所述,您可以将Enum值(一个实例)传递给构造函数。

public class CArea<T extends Enum<T>>
{
    private final AtomicReference<T> type;

    public CArea(T enumVal)
    {
        type = new AtomicReference<>(enumVal);
    }
}

CArea area1 = new CArea<>(EArea.SIDEWALK);
CArea area2 = new CArea<>(EArea.DIRECTLANE);


注意:使用此类型参数可以是任何枚举。

07-24 09:20