在 Memento 模式中无法访问抽象状态模式中的吸气剂
Getters in abstract State pattern not accessible in Memento pattern
我在将一些变量从 State 抽象方法保存到 Memento 模式中的文件时遇到问题。错误是 'Non accessible in scope'.
以下是代码片段:
状态class.
public abstract class State
{
protected int W;
public int getW()
{
return W;
}
public void setW(int w)
{
W = w;
}
}
纪念品class.
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);
}
}
我知道这不应该,但如何解决?
你至少有三个问题。
首先,您需要在您的 Momento class 中的某处构造一个 State class 实例,也许作为构造函数中的成员?我不知道你想完成什么。
其次,State 是抽象的,因此您必须定义一个可以实例化的子class。像这样:
class MyState extends State...
并实例化 MyState。
第三,State 没有声明 getH() 方法。你希望怎么称呼它?
哦,还有一件事:
state.State.this
您对 "this" 的使用似乎不正确。
我在将一些变量从 State 抽象方法保存到 Memento 模式中的文件时遇到问题。错误是 'Non accessible in scope'.
以下是代码片段:
状态class.
public abstract class State
{
protected int W;
public int getW()
{
return W;
}
public void setW(int w)
{
W = w;
}
}
纪念品class.
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);
}
}
我知道这不应该,但如何解决?
你至少有三个问题。
首先,您需要在您的 Momento class 中的某处构造一个 State class 实例,也许作为构造函数中的成员?我不知道你想完成什么。
其次,State 是抽象的,因此您必须定义一个可以实例化的子class。像这样:
class MyState extends State...
并实例化 MyState。
第三,State 没有声明 getH() 方法。你希望怎么称呼它?
哦,还有一件事:
state.State.this
您对 "this" 的使用似乎不正确。