java - 在 Java 中通过引用传递列表

标签 java

我对 Java 有一个非常基本的疑问。

这是我写的代码。从包A中的类A中的方法,我尝试实例化不同包的类b的对象并调用其方法,以我传递了一个列表。

 parseObjectList = new ArrayList<ParseObject>();
 pullAllService.pullAllData(queryType,parseObjectList);

在函数中我做了一些操作:

 public void pullAllData(String queryType,List<ParseObject> parseObjectList)
{
    ParseQuery<ParseObject> query = null;

    List<ParseObject> parseObjects = parseObjectList;

    if(queryType.equals("a"))
    {
        query = new ParseQuery<ParseObject>("a");
    }
    else if(queryType.equals("b"))
    {
        query = new ParseQuery<ParseObject>("b");
    }



    try {
        parseObjects = query.find(); //I get the list

       /* final List<ParseObject> finalParseObjectList = parseObjectList;
        curActivity.runOnUiThread(new Runnable() {
            public void run() {
                ToastMessageHelper.displayLongToast(curActivity, "Objects found : ");
                for (int i = 0; i < finalParseObjectList.size(); i++) {
                    ToastMessageHelper.displayLongToast(curActivity, finalParseObjectList.get(i).get("Name").toString());
                    System.out.println();
                }
            }
        });
    */

    } catch (ParseException e) {
    e.printStackTrace();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }


}

之后,如果我尝试在 A 类的方法中打印列表。我得到一个空列表。

但是如果我这样做,

 parseObjectList = new ArrayList<ParseObject>();
 parseObjectList = pullAllService.pullAllData(queryType,parseObjectList);

并使其从 pullAllData() 返回列表(通过更改返回类型并返回列表),我得到了包含预期数据的列表。

我认为只需将 parseObjectList 传递到函数中,传递的参数就会充当引用并自动分配预期的数据。这里出了什么问题?

最佳答案

Java 是一种按值传递语言。将 List 引用传递给方法允许该方法改变该引用所引用的 List,但它不能更改传递给它的 List 引用的值。

您可以执行以下操作将元素添加到传递给您的方法的列表中:

parseObjectList.addAll(query.find());

关于java - 在 Java 中通过引用传递列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806786/

相关文章:

java - 关于 intellij 中 Jdk5 的错误,即使 pom.xml 明确地将源设置为 7

java - 需要在java中显示流满二叉树

java - 使用mysql数据库的SQL语句语法

java - 使用 Facebook 登录并通过相机拍摄照片并在自己的墙上分享

java - java web应用程序中服务器上的 session 超时后如何自动注销

java - SceneBuilder 应用 Gluon 主题 CSS

java - 摆脱 Map 中的泛型

java - Jackson 在 Json 响应中显示字段

java - 泛型方法重写其基础的泛型方法

java - uriBuilder 返回 http :/instead of http://