Java 方法在嵌套 类 中不起作用
Java method not working in nested classes
我有 1 个外部 class 和 1 个内部 class,如下所示:
public class Outer extends PircBot {
...
public class Inner extends SessionAdapter {
...
}
}
在 Inner
class 中,我正在尝试调用一个名为 sendMessage(..)
的方法,该方法位于 PircBot
中(而不是 Outer
class。但是我当然知道 Outer
和 Pircbot
classes 中的所有字段都继承了 Inner
class):
@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。这些聊天消息是在我键入时从我的 Phone 从 Yahoo Chat Messenger 接收的)。任何人都可以看到我的代码有什么问题吗?
这就是我所做的。我更改了 inner class 实例化的位置(从默认外部构造函数内部到实例变量)。像这样:
来自
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 {
...
}
}
此外,这可能是一个抽搐的事情。有时频道名称的大写不起作用。它需要以某种方式将字母大写。所以我改变了字符串中字母的大写(奇怪但无论如何)。
我有 1 个外部 class 和 1 个内部 class,如下所示:
public class Outer extends PircBot {
...
public class Inner extends SessionAdapter {
...
}
}
在 Inner
class 中,我正在尝试调用一个名为 sendMessage(..)
的方法,该方法位于 PircBot
中(而不是 Outer
class。但是我当然知道 Outer
和 Pircbot
classes 中的所有字段都继承了 Inner
class):
@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。这些聊天消息是在我键入时从我的 Phone 从 Yahoo Chat Messenger 接收的)。任何人都可以看到我的代码有什么问题吗?
这就是我所做的。我更改了 inner class 实例化的位置(从默认外部构造函数内部到实例变量)。像这样:
来自
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 {
...
}
}
此外,这可能是一个抽搐的事情。有时频道名称的大写不起作用。它需要以某种方式将字母大写。所以我改变了字符串中字母的大写(奇怪但无论如何)。