2012-06-30 176 views
1

因此,基本上,即時通訊實現在視圖中的接口,然後傳遞視圖作爲自定義事件的來源,在3「instanceof」調用之一它返回false。Java - instanceof返回false時,應該是true

查看:

public class NamedOffensiveStatsView extends BagVectorPanel implements INamedOffensiveStatsView { 

Event.toString():

@Override 
public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    sb.append(this.getSource().getClass() + ": "); 

e.toString()打印:

class pl.drag0nius.diablo3.DPSCalc.NamedOffensiveStats.NamedOffensiveStatsView$2 

的instanceof返回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())); 
      } 
     } 
    }); 

「這個」 被引用嵌套類,而不是視圖。

+0

e.getSource()== null其中instanceof返回false? – Keppil

+5

我認爲你應該把你的編輯作爲答案,並接受你自己的答案。 – nhahtdh

+0

事情是我不能回答我自己的問題發佈後的頭10個小時或類似的東西。 – drag0nius

回答

7

012xx在類名的末尾指示源似乎是NamedOffensiveStatsView的匿名內部類。因此它不會是一個實例NamedOffensiveStatsView

相關問題