【问题标题】:Java access variables in arguments [duplicate]参数中的Java访问变量[重复]
【发布时间】:2013-02-18 16:24:10
【问题描述】:

我希望能够访问传递给我的方法的变量。我知道 C 可能有某种方法可以将某物的地址作为参数传递,然后将其称为指针并能够使用该变量。无论如何,这是一个例子。

void myFunction(address to variable) {
    *variable = "example";
}

然后称它为:

myFunction(&somevariable);

【问题讨论】:

  • 通过引用传递是术语。是的,可变对象就是这样。

标签: java variables pointers arguments


【解决方案1】:

在 Java 中无法通过引用或指针传递参数,因此实现您想要的效果的唯一方法是传递一个 mutable 对象,并在方法内更改其值你打电话:

public class ChangeableInt {
    private int number;
    public ChangeableInt(int value) {number = value;}
    public int get() {return number;}
    public void set(int value) {number = value;}
}

有了这个类,你可以这样做:

void myFunction(ChangeableInt arg) {
   arg.set(42);
}
...
ChangeableInt val = new ChangeableInt(123);
myFunction(val);
System.out.println(val.get()); // prints 42

【讨论】:

    【解决方案2】:

    你需要的是一个简单的包装模板类...

    class ObjWrapper<T> {
      T value;
    
      void setValue(T val) {
        value=val;
      }
    
      T getValue() {
        return value;
      }
    }
    

    【讨论】:

      【解决方案3】:

      类似

       class Myclass{
          int x=15;
      
          System.out.println(x) //15
      
          public static void main(String... ){
      
          Myclass obj = new Myclass()
          Myclass newRef =  method(obj)
          System.out.println(newRef.x)   //20
      
      
      
      
          }
         static Myclass method(Myclass ref){
             ref.x=20
      
          return ref
        }  
          }//class
      

      请注意,'obj' 是对驻留在堆中某处的对象的引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        • 2012-10-03
        • 2023-03-17
        • 2015-06-14
        • 2011-04-29
        • 2020-06-16
        • 2019-12-05
        相关资源
        最近更新 更多