免责声明:我不确定这个问题目前是否可以回答。如果很难回答或实际上不可能,我将重新发布一个可编译的示例,但我目前没有时间。
有人可以告诉我为什么编译:
public void addOutputConnLayer(OutputConnLayer mainOutputConnLayer) {
for (Map.Entry<String, AbstractPanelController<? extends AbstractPanelModel,
? extends AbstractPanelView<? extends AbstractPanelModel>>> entry : subControllers.entrySet()) {
if (entry.getValue() instanceof OutputConnLayerUser) {
OutputConnLayerUser tmp = (OutputConnLayerUser)entry.getValue();
tmp.addOutputConnLayer(mainOutputConnLayer);
}
}
}
而当我不使用局部变量时,出现“OutputConnLayerUser 无法解析为变量”错误?例如:
public void addOutputConnLayer(OutputConnLayer mainOutputConnLayer) {
for (Map.Entry<String, AbstractPanelController<? extends AbstractPanelModel,
? extends AbstractPanelView<? extends AbstractPanelModel>>> entry : subControllers.entrySet()) {
if (entry.getValue() instanceof OutputConnLayerUser) {
(OutputConnLayerUser)(entry.getValue()).addOutputConnLayer(mainOutputConnLayer); //<--- this line produces the error
}
}
}
OutputConnLayerUser 是具有单一方法的接口。它看起来如下:
public interface OutputConnLayerUser {
public void addOutputConnLayer(OutputConnLayer ocl);
}