Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA-更改成员枚举中的非静态类字段';s函数_Java_Oop_Enums_Fsm - Fatal编程技术网

JAVA-更改成员枚举中的非静态类字段';s函数

JAVA-更改成员枚举中的非静态类字段';s函数,java,oop,enums,fsm,Java,Oop,Enums,Fsm,我正在尝试用Java实现一个FSM。 我有一个FSM类,它有一个字符串字段消息和一个枚举来管理bot状态。 下面是一个示例代码 public class fsmBot { public String message; public enum BotStates { greeting { @Override public void message() {

我正在尝试用Java实现一个FSM。 我有一个FSM类,它有一个字符串字段消息和一个枚举来管理bot状态。 下面是一个示例代码

public class fsmBot
{
    public String message;

    public enum BotStates
    {
        greeting
        {
            @Override
            public void message()
            {
                message = "Hi";
            }

            @Override
            public String nextState()
            {
                String nxtState = BotStates.state1.name();
                return nxtState;
            }
        },
        state1
        {
            @Override
            public void message()
            {
                fsmApplyLeave.message = "How are you?";
            }

            @Override
            public String nextState()
            {
                String nxtState = BotStates.state1.name();
                return nxtState;
            }
        };
    }
}
但是,在这里,我在访问enum BotStates的函数greeting()中的String message(我的类fsmBot的一个字段)时遇到了一个错误。我可以通过静态消息来实现它的工作,但我需要运行这个fsmBot类的多个实例。 有没有办法做到这一点

*编辑1-
Eclipse在编辑器中出现以下错误-无法对非静态字段消息进行静态引用

enum
s是静态类,因此可以执行以下操作:

public class fsmBot
{
    public String message;

    public enum BotStates
    {
        greeting
        {
            @Override
            public void message(fsmBot bot)
            {
                bot.message = "Hi";
            }

            @Override
            public String nextState()
            {
                String nxtState = state1.name();
                return nxtState;
            }
        },
        state1
        {
            @Override
            public void message(fsmBot bot)
            {
                bot.message = "How are you?";
            }

            @Override
            public String nextState()
            {
                String nxtState = state1.name();
                return nxtState;
            }
        };

        public abstract void message(fsmBot bot);
        public abstract String nextState();
    }
}

枚举是静态的