我在将状态抽象方法中的一些变量保存到Memento模式中的文件时遇到问题。该错误在范围内无法访问。
以下是代码:
州级。
public abstract class State
{
protected int W;
public int getW()
{
return W;
}
public void setW(int w)
{
W = w;
}
}
Memento课程。
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);
}
}
我知道它不应该起作用,但如何解决呢?
答案 0 :(得分:0)
你至少有三个问题。
首先,您需要在Momento类中的某个位置构造State类的实例,可能是构造函数中的成员吗?我不知道你想要完成什么。
其次,State是抽象的,因此您必须定义一个可以实例化的子类。像这样的东西:
class MyState extends State...
并实例化MyState。
第三,State并没有声明一个getH()方法。你怎么称呼那个?
哦,还有一件事:
state.State.this
你使用"这个"看起来不对。