0

我在将状态抽象方法中的一些变量保存到备忘录模式中的文件时遇到问题。错误是“范围内不可访问”。

以下是代码片段:

州级。

public abstract class State 
{
    protected int W;


    public int getW() 
    {
        return W;
    }

    public void setW(int w)
    {
        W = w;
    }
}

纪念品课。

public class Memento  {
    private int w, h;
    private double health;
    private FileWriterUtil fileWriter = new FileWriterUtil("data.txt");
    private FileWriterCaretaker caretaker = new FileWriterCaretaker();

        public void Save() {
        //here is the error in two lines under.
        w = state.State.this.getW();
        h = state.State.this.getH();

        String strI = Integer.toString(w);
        String strII = Integer.toString(h);
        String str = strI+strII;

        fileWriter.write(str);
        caretaker.save(fileWriter);
        }
}

我知道它不应该工作,但如何解决它?

4

1 回答 1

0

你至少有三个问题。

首先,您需要在 Momento 类的某个位置构造 State 类的实例,也许作为构造函数中的成员?我不知道你想要完成什么。

其次,State 是抽象的,因此您必须定义一个可以实例化的子类。像这样的东西:

class MyState extends State...

并实例化 MyState。

第三,State 没有声明 getH() 方法。你希望怎么称呼它?

哦,还有一件事:

state.State.this

您对“this”的使用似乎不正确。

于 2016-01-09T15:56:42.063 回答