gpt4 book ai didi

java - java中发送 "ready to call"函数

转载 作者:行者123 更新时间:2023-12-01 09:20:18 25 4
gpt4 key购买 nike

Java 中有没有一种方法可以将“指针”发送到另一个函数,以便该函数可以在需要时调用它?

目前,我正在发送所有参数并使用实现必须调用的函数的接口(interface),如下所示:

//assumes effectThisPacket has already validated this packet.
public void sendEffectPacket(DatagramSocket s, Packet p, SendReceiveInterface i){ //affect the packet based on effect, then send it (if it's not dropped)
switch(effect){ //REFACTOR fix this once effect is an enum
case (1): //drop packet
//do nothing, the packet disappears
break;
case (2): //delay packet
try {
Thread.sleep(effectArgs[0]);
} catch (InterruptedException e) {
e.printStackTrace();
}
i.sendFromSocket(s, p); //I want to fix this line
break;
case (3): //duplicate packet
break;

}
}

所以我的问题 - 有没有办法将 i.sendFromSocket(s,p) (或者如果我想要的话,可以使用不同的函数)发送到我的 sendEffectPacket 函数作为参数,这样我所要做的就是 call (function),而不用担心参数是什么?有没有办法预先构建将生成的整个堆栈帧,发送该帧,并在我准备好时将其插入堆栈?

最佳答案

Java 8 来救援。所描述的技术是回调,传递结果或使用回调调用它很麻烦。

您将需要更少的类(class):

public void sendEffectPacket(DatagramSocket s, Packet p,
BiConsumer<DatagramSocket, Packet> i) {

i.accept(s, p);

调用者可以使用 lambda:

sendEffectPacket(s, p, (socket, packet) -> {
System.out.printf("S: %s, P: %s%n", socket, packet);
});

关于java - java中发送 "ready to call"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208588/

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