【问题标题】:using java variable from another file method in run of other file在运行其他文件时使用来自另一个文件方法的 java 变量
【发布时间】:2015-06-07 23:18:17
【问题描述】:

我有两个这样的文件:

Client.java:

public class Client implements Runnable {
//code

   public void run() {
   //more code
       Crypt cls = new Crypt();
       cls.decrypt(request,key,type);
       //print "val" here.
   //more code
   }
}

然后是这样的Crypt.java文件:

public class Crypt{

    public static byte[] decrypt(byte[] val, byte[] key, int type)
    {

        //val assigned here
        // the following is used to assign it.
       val[length - len - 1] ^= key[8 + (((byte)(key[8 + b] + key[8 + a])) & 0xFF)];


      return val;
    }   

}

Client.java 文件中的 val 变量在运行完 Crypt.java 文件后,我需要能够再次访问它。

我尝试过cls.valcls.decrypt.val,但我不知道如何让它工作。

感谢您的帮助!

【问题讨论】:

  • 你在哪里声明val?是方法局部变量还是实例变量还是静态变量?
  • 存储返回值byte[] res = cls.decrypt(request,key,type);
  • 只需将cls.decrypt() 的结果分配给某个东西。此外,它似乎是传递给该方法的原始字节数组。所以你的 request 变量也指向它。
  • @tomse 发布为答案 m8 ;)
  • 您甚至不必使用 new 运算符 - Crypt cls = new Crypt(),因为 decrypt() 是一个静态方法。看我的回答。

标签: java arrays variables static static-methods


【解决方案1】:

由于您的decrypt() 方法返回一个值,因此在调用它时将其分配给一个变量。

byte[] result = cls.decrypt(request, key, type);

然后您的 result 变量就是您想要的值,在 Client.java 中并可以使用。

【讨论】:

    【解决方案2】:

    Crypt 类中的dycrypt() 方法是Crypt 类的static 成员。所以你不需要在Client类中创建Crypt类的实例——

    Crypt cls = new Crypt();
    cls.decrypt(request,key,type);  
    

    您可以使用类名调用decrypt() 方法并将返回值存储到byte[] 数组中 -

    byte[] vals = Crypt.decrypt(request, key, type); 
    

    然后使用 for 循环/for-each 循环,您可以打印 vals 数组 -

    for(byte each : vals){
       System.out.println(each);
    }
    

    【讨论】:

      【解决方案3】:

      只需将dectypt 的返回值赋给一个变量并使用它。

      byte[] res = cls.decrypt(request,key,type);
      

      【讨论】:

        猜你喜欢
        • 2012-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多