java中的传递参数优化

java中的传递参数优化,java,optimization,parameter-passing,Java,Optimization,Parameter Passing,在java中,传递给方法的参数是否重要?例如,我有一些验证方法。假设我有一个类Person保存个人信息,另一个类中有一个方法验证电子邮件收件人。在我的Controller类中,我使用Person和Validator类,我应该传递整个Person对象,还是只传递带有电子邮件Person.getEmail()的字符串。在第一个选项中,Person.validateEmail(Person-Person)方法可以调用Person.getEmail()。那么,传递的参数有多大是否重要?我的意思是在内存/

在java中,传递给方法的参数是否重要?例如,我有一些验证方法。假设我有一个类
Person
保存个人信息,另一个类中有一个方法验证电子邮件收件人。在我的
Controller
类中,我使用
Person
Validator
类,我应该传递整个
Person
对象,还是只传递带有电子邮件
Person.getEmail()
的字符串。在第一个选项中,
Person.validateEmail(Person-Person)
方法可以调用
Person.getEmail()
。那么,传递的参数有多大是否重要?我的意思是在内存/cpu方面。

java
中,当你传递
Person
的整个对象时,你只传递该对象的地址。所以,这样做并不是处理整个对象,而是处理它的引用

在这种情况下,就性能而言,您将传递什么并不重要:单个电子邮件地址或包含该电子邮件的
person
对象


另一方面,这取决于您将来将如何使用该方法。如果这个方法是一种
实用工具
方法,它可以处理一封抽象的电子邮件,那么只通过电子邮件传递
字符串
参数将是一个很好的接口解决方案。

java
中,当你传递
个人的整个对象时,你只需传递该对象的地址。所以,这样做并不是处理整个对象,而是处理它的引用

在这种情况下,就性能而言,您将传递什么并不重要:单个电子邮件地址或包含该电子邮件的
person
对象


另一方面,这取决于您将来将如何使用该方法。如果此方法是某种
实用工具
方法,它可以处理抽象的电子邮件,那么只通过电子邮件传递
字符串
参数将是一个很好的接口解决方案。

不,没关系,因为您传递的只是对相关对象的引用。有关详细信息,请参阅


一个例外是,如果方法调用是远程的,则必须序列化整个对象图。所需的时间取决于字段的数量和数据量。

不,这无关紧要,因为您传递的只是对相关对象的引用。有关详细信息,请参阅


一个例外是,如果方法调用是远程的,则必须序列化整个对象图。这需要的时间取决于字段的数量和数据量。

Java将参数传递为按值调用,而不是按引用调用。因此,对于对象,它只传递person类的地址值。

Java传递参数作为值调用,而不是引用调用。因此,对于对象,它只传递person类的地址值。

您传递的是引用的副本。引用对象的类型无关紧要。除了已经给出的答案外,我鼓励您传递
Person
对象,前提是验证考虑了该人提供的更多信息,而不仅仅是电子邮件地址。这允许更多的类型安全性。OTOH,如果您只想验证邮件地址,而不传递person对象,这将导致您的验证方法不可重用。您正在传递引用的副本。引用对象的类型无关紧要。除了已经给出的答案外,我鼓励您传递
Person
对象,前提是验证考虑了该人提供的更多信息,而不仅仅是电子邮件地址。这允许更多的类型安全性。OTOH,如果您只想验证邮件地址,而不传递person对象,这将导致您的验证方法不可重用。