gpt4 book ai didi

java - 访问匿名处理函数内部的对象

转载 作者:行者123 更新时间:2023-12-01 18:34:36 24 4
gpt4 key购买 nike

我有一个非常基本的问题。我刚刚开始使用 vertx 框架。有件事我无法理解,比如

vertx.createNetServer().connectHandler(new Handler<NetSocket>() {
@Override
public void handle(final NetSocket socket) {

socket.dataHandler(new Handler<Buffer>() {
public void handle(Buffer buffer) {
/* I can access the socket object inside this handler */
socket.write("Hello");
}
});
}
}).listen(1234);

但是如果我像这样单独编写处理函数

Handler<Message> socketHandler = new Handler<Buffer>() {
public void handle(Buffer buffer) {
/* How can i access the socket object now */
socket.write("Hello"); //this will give error as it does not recognize the socket object
}
};


vertx.createNetServer().connectHandler(new Handler<NetSocket>() {
@Override
public void handle(final NetSocket socket) {
socket.dataHandler(socketHandler);//now I write handler separately
}
}).listen(1234);

Handler 可以位于同一个 java 类或其他 java 类中的任何位置。请帮助我如何单独编写处理程序并仍然访问套接字对象。

最佳答案

在第二个示例中,您没有传递 socketsocketHandler ,所以你不能期望 socketHandler来了解一下。

您可以通过创建类似 createSocketHandler(final Socket socket) 的方法来解决这个问题返回 Handler<Message>这取代了你的 socketHandler变量。

了解更多信息并找出您需要 socket 的原因成为final ,查找“匿名内部类”

关于java - 访问匿名处理函数内部的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com