2012-06-30 2 views
1

기본적으로 뷰에 인터페이스를 구현 한 다음 뷰를 3 개의 "instanceof"호출 중 하나에서 사용자 정의 이벤트의 소스로 전달하여 false를 반환합니다.Java - instanceof가 true 일 때 거짓을 반환하는 instanceof

보기 :

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 

false를 반환 instanceof를 :

@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

인스턴스가 아닐 수도 있습니다. 여기서 instanceof는 false를 반환합니다. e.getSource() == null? – Keppil

+5

나는 당신이 당신의 편집을 답으로 써야하고 자신의 대답을 받아 들여야한다고 생각한다. – nhahtdh

+0

게시 후 처음 10 시간 동안 내 질문에 답할 수 없습니다. – drag0nius

답변

7

클래스 이름 끝에 $2은 소스가 익명의 내부 클래스 NamedOffensiveStatsView 인 것으로 나타납니다. 따라서 NamedOffensiveStatsView

관련 문제