2016-07-26 209 views
0

我有1 1內部類外部類這樣不工作Outer類,但我當然知道OuterPircbot類的所有字段都在Inner類繼承):Java方法在嵌套類

@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聊天中看不到這條消息(該程序將聊天消息發送給Twitch聊天。當我輸入聊天消息時,這些聊天消息從我的手機上的Yahoo聊天消息中接收)。任何人都可以看到我的代碼有什麼問題嗎?

+0

如果你知道sendMessage被調用的事實,那麼你的問題可能在於sendMessage方法(你沒有發佈)。這使得很難提供幫助。 – Mark

+0

好吧,我讀過這個,就我而言,你可以關閉它,但我應該提到我不是那個收藏這個問題的人,所以可能有其他人試圖找到這個答案。感謝您的考慮。 – Mark

+0

如果您發現答案,請將答案添加到答案塊。請不要用[解決]破壞標題,也不要在問題上附加答案 - 我們更願意在這裏清楚地描述問題和答案,尤其是要改進SE API中提供的數據。你會編輯嗎?謝謝! – halfer

回答

1

這就是我所做的。我改變了內部類的實例化位置(從默認的外部構造函數到實例變量)。就像這樣:

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 { 
...  
} 
} 

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 { 
...  
} 
} 

此外,它可能是一個抽搐的事情。有時通道名稱的大小寫不起作用。它需要以某種方式對字母進行大寫。所以我改變了字符串的大小寫(奇怪但是無論如何)。