Java 修改后是否需要在方法中将arraylist指定为返回类型?
我想知道返回“更新的”Java 修改后是否需要在方法中将arraylist指定为返回类型?,java,arraylist,Java,Arraylist,我想知道返回“更新的”ArrayList的最佳实践是什么 例如,如果我正在添加一个新元素,那么无论我是否指定了返回类型(请参见addNewA()和addNewB()),我的main()方法中的ArrayList似乎仍将“更新” 我是否应该指定返回类型? 目前,在我的客户机程序中,大多数方法,我都将其指定为void(无返回类型),虽然整个程序仍按预期工作,但我想澄清这一点,并在必要时进行必要的更改 public class MyClient { public static ArrayLis
ArrayList
的最佳实践是什么
例如,如果我正在添加一个新元素,那么无论我是否指定了返回类型(请参见addNewA()
和addNewB()
),我的main()
方法中的ArrayList
似乎仍将“更新”
我是否应该指定返回类型?
目前,在我的客户机程序中,大多数方法,我都将其指定为void
(无返回类型),虽然整个程序仍按预期工作,但我想澄清这一点,并在必要时进行必要的更改
public class MyClient
{
public static ArrayList<Person> addNewA(ArrayList<Person> myArray)
{
Person jack = new Person("jack", 24);
myArray.add(jack);
return myArray;
}
public static void addNewB(ArrayList<Person> myArray)
{
Person ben= new Person("ben", 19);
myArray.add(ben);
}
public static void main(String[] args)
{
ArrayList<Person> personArray= new ArrayList();
addNewA(personArray); // will return me an array size of 1
addNewB(personArray); // will return me an array size of 2
}
}
公共类MyClient
{
公共静态ArrayList addNewA(ArrayList myArray)
{
人杰克=新人(“杰克”,24);
myArray.add(jack);
返回myArray;
}
公共静态void addNewB(ArrayList myArray)
{
人本=新人(“本”,19);
myArray.add(ben);
}
公共静态void main(字符串[]args)
{
ArrayList personArray=新的ArrayList();
addNewA(personArray);//将返回1的数组大小
addNewB(personArray);//将返回大小为2的数组
}
}
在java(和大多数高级严格类型语言)中,对象
通过引用
传递,原语通过值
传递
使用new
关键字时,您将创建一个对象
虽然原语(如int
、char
、double
ect)是按值传递的(这意味着变量值的副本将被发送到调用的函数),但对象类型是按引用传递的,这意味着实际的原始对象被传递到函数
总之,由于您在这里使用对象(ArrayList
),您不需要返回类型,因为原始对象正在更改。在这种情况下,您不应该返回列表,应该使您的方法无效
不同的语言有不同的约定,但Java的约定之一是,通过修改参数(或调用它们的对象)进行操作的方法不应返回值。返回值意味着使用您的代码的人将返回另一个对象,因为否则返回调用方已经拥有的对象是没有用的1。另一方面,void
方法不可能返回复制和扩展的列表,因此很明显,它的目的是通过修改您首先给出的列表来操作
(顺便说一下,您应该注意关于使用new ArrayList()
而不是new ArrayList()
的警告)
1有一个特殊的例外,称为fluent builder模式,但它不容易与这样的常规代码混淆。谢谢您的回复。它在列表中清晰可见
谢谢,并在对象和基本类型中注明!