【问题标题】:Java method doesn't change parameter objects [duplicate]Java方法不会更改参数对象[重复]
【发布时间】:2013-05-06 23:06:56
【问题描述】:

我有这样的功能:

public static int partition(List list, ListElement elemL, ListElement elemR){
    ListElement elemX;
    ...
    elemR = elemX.next;
    return x; 
}

并且在函数结束时 elemR 发生了变化,但是在从主方法调用函数之后,参数 elemR 仍然具有与函数之前相同的值称呼。 有什么问题?如何在调用函数后更改此 ListElement 并“保存”此更改而不将返回类型更改为 ListElement(我也需要整数返回值)?

【问题讨论】:

  • Java 不是按引用调用,它只是按值调用。看看this
  • “使方法具有破坏性”是什么意思?该怎么做?
  • 这个例子可以帮助你stackoverflow.com/questions/5607773/…
  • 好的,我想我明白了这个问题但是我仍然不知道如何解决这个问题,因为我注意到能够更改 elemX 的值,我必须为 elemR 分配另一个对象。有没有人有想法,如何做到这一点?
  • 好的,我想我刚刚找到了解决方案。我将 elemR 和 elemL 放在 ArrayList 中,并将 ArrayList 作为函数中的参数,所以它似乎工作成功(:

标签: java object parameters pass-by-reference


【解决方案1】:

Java 函数参数通过引用名称调用,这意味着当您将对象作为函数参数放置时,JVM 会将引用的值复制到新变量,并将其作为参数传递给函数。 如果你改变了对象的内容,那么原来的对象就会改变,但是如果你改变了引用的实际值,那么这些改变就会在函数结束时被销毁。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2016-08-12
    • 2019-02-27
    • 2016-07-31
    • 1970-01-01
    相关资源
    最近更新 更多