类Java instanceof在应该为true时返回false
所以基本上,我在一个视图中实现接口,然后将该视图作为定制事件的源传递,在3个“instanceof”调用中的一个调用中,它返回false
视图:
public class NamedOffensiveStatsView extends BagVectorPanel implements INamedOffensiveStatsView {
事件。toString():
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(this.getSource().getClass() + ": ");
e.toString()打印:
class pl.drag0nius.diablo3.DPSCalc.NamedOffensiveStats.NamedOffensiveStatsView$2
返回false的实例:
@Override
public void eventFired(Event e) {
logger.debug("eventFired: " + e.toString());
if (e.getSource() instanceof INamedOffensiveStatsView) {
我也不能从视图转换到它的界面
答复:
在我朋友的帮助下,我们发现了这个问题
代码调用事件(在视图的initComponents()内):
jComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (comboBoxReady) {
logger.debug("actionPerformed");
listener.eventFired(new Event(this, "selection", jComboBox.getSelectedIndex()));
}
}
});
应该是什么:
jComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (comboBoxReady) {
logger.debug("actionPerformed");
listener.eventFired(new Event(NamedOffensiveStatsView.this, "selection", jComboBox.getSelectedIndex()));
}
}
});
“this”引用的是嵌套类,而不是视图
# 1 楼答案
类名末尾的
$2
表示源似乎是NamedOffensiveStatsView
的匿名内部类。因此,它不会是NamedOffensiveStatsView