代码之家  ›  专栏  ›  技术社区  ›  Granzo

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

  •  0
  • Granzo  · 技术社区  · 8 年前

    在这个特定的场景中,我创建了一个包pk,它基本上是一个由3个大整数组成的对象。尤其是我 Sender Network 班级。

    在我的网络课上。我正在尝试分配我声明的两个变量包(inFromSender、outToReciever)。具体来说,我想分配pk的值,或者我在 发件人 同学们,到 inFromSender 通过使用方法初始化。

    这可能吗?

    我试图通过s分配它 endPacketToNetwork() 但是,它给了我一个 在作用域中无法访问类型Network的封闭实例

    这是我的密码。

    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 回复  |  直到 8 年前
        1
  •  0
  •   clinomaniac    8 年前

    对于你想要完成的,这应该是可行的,但这不是一个好的设计,你应该阅读更多关于如何做你想做的事情。

    将发件人类的方法更改为:

    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命名标准,我修改了一些变量名。