在这种特定情况下,我创建了一个Packet pk,它基本上是一个由3个BigInteger组成的对象。在我特定的Sender
类中,生成此数据包后,我试图将其传递给我的Network
类。
在我的网络课程中。我试图分配我声明的两个变量数据包(inFromSender,outToReciever)。具体来说,我想通过使用方法将pk的值或在Sender
类中创建的数据包分配给在inFromSender
类中创建的Network
数据包。
这可能吗?
我已经尝试通过s endPacketToNetwork()
方法来分配它,但是,它给我一个“ 在作用域中没有网络类型的封闭实例”的错误。
这是我的代码。
Sender Class:
private Packet pk;
public Sender() {
System.out.println("----Sender is created-----");
//First value is message, second value is signature, third value is session key.
// Message = string to BigInt
//signature =
pk = new Packet(new BigInteger("13"), new BigInteger("2"),new BigInteger("5"));
System.out.println("The test packet to be sent to network is :\n " + pk.toString());
}
public void generateMessage()
{
}
public void sendPacketToNetwork()
{
Network.this.inFromSender = pk;
}
public Packet getPacket(){
return pk;
}
}
这是我的网络课程:
public class Network {
Packet inFromSender, outToReceiver;
Network() {
System.out.println("----Network is created-----");
inFromSender = new Packet();
outToReceiver = new Packet();
}
public Packet receiveFromSender() {
return outToReceiver;
}
}
如果这不可能,是否有更简单的方法来实现相同的目的?尤其是通过Sender类中的方法?
编辑: 我创建了一个测试器,用于测试将数据包传递到网络。
public class tester
{
public static void main (String [] args)
{
System.out.println("Test 1: Given Code.......................");
//Test 1: Given Code
Sender Sender1 = new Sender();
Receiver Reciever1 = new Receiver();
Network Network1 = new Network();
Sender1.sendPacketToNetwork();
}
}
答案 0 :(得分:0)
对于您要完成的工作,这应该可以工作,但这不是一个好的设计,您应该阅读有关如何做自己想做的事情的更多信息。
将Sender类的方法更改为:
public void sendPacketToNetwork(Network n)
{
n.inFromSender = pk;
}
将测试代码更改为:
public class Tester
{
public static void main (String [] args)
{
System.out.println("Test 1: Given Code.......................");
//Test 1: Given Code
Sender sender1 = new Sender();
Receiver reciever1 = new Receiver();
Network network1 = new Network();
Sender1.sendPacketToNetwork(network1);
}
}
您在这里所做的是将Network的引用传递给Sender类。之后,您可以对网络对象执行所需的操作。
PS:我更改了一些变量名称,以更好地遵循Java命名标准。