java - 调用方法并传递对象引用并使用相同的引用捕获返回

标签 java methods parameter-passing return-value

我有一个初学者问题。我搜索了很多答案,但似乎找不到确切的答案,所以也许更有经验的开发人员可以帮助我解决这个问题。

那么,假设您在代码中遇到以下情况(这是该情况的简化版本):

SomeObject a1 = new SomeObject();
a1 = someMethod(a1);

public SomeObject someMethod(SomeObject a1) {
 a1.changeVariable();
return a1;
}

现在我听几个人说,将对对象的引用传递给方法并捕获返回值是糟糕的编码习惯。不幸的是,没有人能准确地向我解释为什么这是糟糕的编码习惯,而我对原因的搜索也一无所获。有人可以解释为什么这样做是不好的做法吗?我想不出会出现问题的情况。

提前致谢,你们这些好人已经无数次帮助我回答其他人的问题,这是我第一次真正需要发布问题:)

最佳答案

在您展示的场景中,没有太多明显的好处。但是,作为一种模式,它可以在我的经验中很有用 - 特别是如果该方法执行验证。

Guava 的 Preconditions.checkNotNull方法就是一个很好的例子。这意味着我可以编写这样的代码:

public class Player {
    private final String name;

    public Player(String name) {
        this.name = Preconditions.checkNotNull(name);
    }
}

... 而不是必须拆分分配和验证。它还允许验证作为另一个调用的一部分存在,例如给另一个构造函数:

super(Preconditions.checkNotNull(name));

关于java - 调用方法并传递对象引用并使用相同的引用捕获返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27440098/

相关文章:

java - 如何将 ajax 事件绑定(bind)到 primefaces 中的 selectManyMenu 组件

java - 如何在 android-query 中中止 ajax 查询?

java - 确保一个任务在 java 中另一个任务开始之前完成

java - 如何将此方法与另一种方法结合使用?

java - Wicket - 用文本字段替换标签,反之亦然

ios - 当我将 View 从 subview 更改为父 View 时,不会调用父 View 的 viewWillAppear 方法

c++ - 如何使用公共(public)函数访问私有(private)变量?

javascript - HTML 如何在单选按钮按下时传递两个变量?

java - Java中main方法中args的Jdoc描述

java - 将数据传递给 Play Framework 中的 @Finally 注释方法