我想知道返回“更新”的最佳实践是什么 ArrayList
?
例如,如果我正在添加一个新元素,那么无论我是否指定了返回类型(请参阅 addNewA()
以及 addNewB()
),的 ArrayList
在我的 main()
方法仍将“更新”。
是否应该指定返回类型?目前在我的客户端程序中,大多数方法,我都指定为 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
}
}
2条答案
按热度按时间rfbsl7qr1#
在这种情况下,您不应该返回列表,而应该创建您的方法
void
.不同的语言有不同的约定,但java的约定之一是,通过修改参数(或调用它们的对象)进行操作的方法不应返回值。返回一个值意味着使用您的代码的人将返回一个不同的对象,否则返回调用者已经拥有的对象是没有用的。一种
void
另一方面,不可能返回一个复制和扩展的列表,因此很明显,它的目的是通过修改您首先给出的列表来进行操作。(顺便说一下,你也应该
List<Person>
,您应该注意有关使用的警告new ArrayList()
而不是new ArrayList<>()
.)1对此有一个特殊的例外,称为fluent builder模式,但它不容易与这样的一般代码混淆。
qlvxas9a2#
在java(和大多数高级严格类型语言)中
Object
有人路过reference
以及经过的原语value
.当使用
new
关键字创建对象。而原语(如
int
,char
,double
ect)通过值传递(意味着变量值的副本将被发送到被调用的函数),对象类型通过引用传递,意味着实际的原始对象被传递到函数。总而言之-既然你在这里使用object(
ArrayList
),不需要返回类型,因为原始对象正在更改。