Передача переменных из одного класса в другой - PullRequest
0 голосов
/ 25 октября 2018

В этом конкретном сценарии я создал пакет Packet pk, который в основном является объектом, состоящим из 3 BigIntegers.В моем конкретном классе 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 голосов
/ 25 октября 2018

Для того, что вы пытаетесь выполнить, это должно сработать, но это не очень хороший дизайн, и вы должны прочитать больше о том, как делать то, что вы пытаетесь сделать.

Изменить метод класса 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);
    }
}

То, что вы делаете здесь, это передача ссылки на Сеть в класс отправителя.После этого вы можете делать то, что вам нужно сделать с сетевым объектом.

PS: я изменил некоторые имена переменных, чтобы лучше соответствовать стандартам именования java.

...