Java反射改变参数?

标签 java reference out ref

我正在用Java编写一个方法,我想模​​拟引用。由于java没有像C#中那样的out关键字,也没有像C++中那样的引用/指针,我想知道我是否可以使用反射来模拟它。

一个例子是:

public static boolean ChangeValue(Object Input, Object Output) {
    //Use some reflection here to change the value of Output?
    return true;
}

然后在main中:

public static void main(String[] args) {
    int I = 0;
    ChangeValue(I, I);
    System.out.println(I);
}

那么..我可以使用反射来更改传递给 ChangeValue 方法的任何参数的值吗?我不想返回复合对象..

最佳答案

Java 是按引用值传递的,这意味着如果将一个对象传递给一个方法并修改它,该方法“外部”的对象也会被修改(因为该对象只是一个引用)。一个例子是调用 Arrays.sort在数组上。

但是,基元的情况并非如此(例如 int),在这种情况下,Java 是按值传递的,因此您使用 int I 的示例不会'不工作。为了修改 int I 的值,您应该从方法中返回一个 int,并将其相应地设置为 I

这意味着在 ChangeValue 方法中修改对象的值不需要反射。在方法内对对象所做的任何操作,实际上都会修改 main 方法范围内的对象。

关于Java反射改变参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617934/

相关文章:

java - 为什么 Java 不允许 C# "out"特性用于方法参数

Java XML 从上到下读取 XML 文件

java - 在 Windows 上分发 Java Swing 应用程序

java - 如何将 Spring Security 与 Mustache 一起使用?

java - 引用数组中的位置而不是其中的数据。 ( java )

reference - 为包括内部引用在内的方法推断适当的生命周期

c# - 具有返回值和输出参数的 Python NET 调用 C# 方法

java - 无法在 Rally Rest Toolkit for Java 中读取父项目的所有子项目用户故事

perl - 我如何优雅地从 Perl 中的数组引用创建散列?

读取txt文件时无法分隔列