将变量从一类传递到另一类

时间:2018-10-25 01:05:03

标签: java class object methods this

在这种特定情况下,我创建了一个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();
    }
}

1 个答案:

答案 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命名标准。