2016-07-26 5 views
0

중첩 된 클래스에서 작동하지 Outer 클래스 물론 나는 OuterPircbot 클래스의 모든 필드)가 Inner 클래스에서 상속 알고 있지만 :.자바 방법은 내가 이런 일 개 내부 클래스 1 개 외부 클래스가

@Override 
public void messageReceived(SessionEvent event) { //This method is inside SessionAdapter class which I am extending in my Inner class 
Outer.this.sendMessage(event.getMessage()); //This method is inside Pircbot class which I am extending in my Outer class 
} 

나는 sendMessage(..) 메서드가 호출된다는 사실을 안다. 그러나 어떤 이유로 나는 Twitch chat (이 프로그램은 Twitch Chat에 채팅 메시지를 보냅니다. 그 채팅 메시지는 입력시 Yahoo Chat Messenger로부터 받았습니다.) 누구든지 내 코드가 잘못된 것을 볼 수 있습니까?

+0

sendMessage가 호출되었다는 사실을 알고 있다면 아마도 게시하지 않은 sendMessage 메서드에 문제가있는 것일 수 있습니다. 그래서 도움이되지 않습니다. – Mark

+0

좋아요.이 글을 읽으면 제가 생각하기에 이것을 닫을 수 있습니다. 그러나 나는이 질문을 즐겨 쓰는 사람이 아니라는 것을 언급해야합니다. 그래서이 질문에 답을 찾으려고 노력하는 누군가가있을 수 있습니다. 고려해 줘서 고마워. – Mark

+0

답변을 발견하면 답변을 답변 블록에 추가하십시오. 제목에 [해결 방법]을 사용하지 말고 질문에 대한 답변을 추가하지 마십시오. SE API에서 제공하는 데이터를 개선하는 것 외에도 여기에 명확하게 설명되어있는 질문과 대답을 선호합니다. 편집하겠습니까? 감사! – halfer

답변

1

이것은 내가 한 일입니다. 내부 클래스의 인스턴스 생성 위치를 기본 외부 생성자 내부에서 인스턴스 변수로 변경했습니다. 이처럼 :

또한

public class Outer extends PircBot { private int x; Inner n = new Inner(); //Now instantiation is outside constructor public Outer(){ x = 5; //no more instantiation inside constructor } public class Inner extends SessionAdapter { ... } } 

으로
public class Outer extends PircBot { 
private int x; 
public Outer(){ 
x = 5; 
Inner n = new Inner(); //Instantiation inside Outer class's default constructor 
} 
public class Inner extends SessionAdapter { 
...  
} 
} 

에서, 그것은 트 일이되었을 수 있습니다. 때때로 채널 이름의 대문자 사용이 작동하지 않습니다. 그것은 어떤 방식 으로든 글자의 대문자 사용이 필요합니다. 그래서 나는 String의 글자의 대소 문자를 변경했다.