【问题标题】:Java method not working in nested classesJava方法在嵌套类中不起作用
【发布时间】:2016-11-29 19:16:15
【问题描述】:

我有 1 个外部类和 1 个内部类,如下所示:

public class Outer extends PircBot { 
...
public class Inner extends SessionAdapter { 
...    
}
}

Inner 类中,我试图调用一个名为 sendMessage(..) 的方法,它在 PircBot 中(而不是在 Outer 类中。但我当然知道 OuterPircbot 中的所有字段类在Inner类中继承):

@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 Chat。当我键入这些聊天消息时,这些聊天消息是从我的手机上的 Yahoo Chat Messenger 接收的)。谁能看到我的代码有什么问题?

【问题讨论】:

  • 如果您知道调用了 sendMessage 的事实,那么您的问题可能在于 sendMessage 方法(您没有发布)。这让人很难提供帮助。
  • 好的,我读了这个,你可以关闭这个,就我而言,但我应该提到我不是喜欢这个问题的人,所以可能有其他人试图找到一个回答这个问题。不过感谢您的考虑。
  • 如果您发现了答案,请将答案添加到答案块中。请不要用 [已解决] 破坏标题,也不要将答案附加到问题中 - 我们希望在此处清楚地描述问题和答案,尤其是为了改进 SE API 中提供的数据。你会编辑吗?谢谢!
  • 感谢您添加答案!

标签: java inner-classes outer-classes


【解决方案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 { 
...    
}
}

另外,这可能是一个抽搐的事情。有时频道名称的大写不起作用。它需要以某种方式大写字母。所以我改变了字符串中字母的大小写(奇怪但无论如何)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    相关资源
    最近更新 更多