当我尝试编译并运行这部分代码时,我得到了这个错误:
线程中的异常" AWT-EventQueue-0" java.lang.Error:未解决的编译问题: 侦听器无法解析为变量
at FormPanel.setFormListener(FormPanel.java:273)
at MainFrame.<init>(MainFrame.java:37)
at App$1.run(App.java:10)
代码是这样的:
// public void setFormListener(DailyFormListener listener) {
// this.formDayListener = listener;
//
// }
public void setFormListener(Object o) {
if (o instanceof DailyFormListener) {
this.formDayListener = listener;
}
else if (o instanceof GeneFormListener) {
this.geneFormListener = listener;
}
else if (o instanceof LabFormListener) {
this.labFormListener = listener;
}
}
这是从第273行开始的。我的问题是,它运行时已经注释掉了上面的部分,但是现在在未注释的部分中。我需要更改什么才能让setFormListener足够通用来处理这个问题?我可以根据需要提供更多代码或信息。
答案 0 :(得分:5)
您的变量为o
,而不是listener
。
将您的代码更改为:
public void setFormListener(Object o) {
if (o instanceof DailyFormListener) {
this.formDayListener = (DailyFormListener)o;
}
else if (o instanceof GeneFormListener) {
this.geneFormListener = (GeneFormListener)o;
}
else if (o instanceof LabFormListener) {
this.labFormListener = (LabFormListener)o;;
}
}
答案 1 :(得分:0)
您必须将Object转换为具体的侦听器类型
public void setFormListener(Object o) {
if (o instanceof DailyFormListener) {
this.formDayListener = (DailyFormListener)o;
}
else if (o instanceof GeneFormListener) {
this.geneFormListener = (GeneFormListener)o;
}
else if (o instanceof LabFormListener) {
this.labFormListener = (LabFormListener)o;
}
}