2013-06-06 3 views
0

자바에서 매개 변수를 전달하는 방법은 무엇입니까? 예를 들어, 검증을위한 몇 가지 방법이 있습니다. 개인 정보를 보유하는 클래스 Person과 다른 클래스의 전자 메일 주소를 확인하는 하나의 메소드가 있다고 가정 해 봅시다. 내 Controller 클래스에서 Person 클래스와 Validator 클래스를 사용하는 경우 전체 person 객체를 전달해야합니까? 아니면 이메일 person.getEmail()과 함께 문자열 만 전달해야합니까? 첫 번째 옵션에서 Person.validateEmail(Person person) 메서드는 person.getEmail()을 호출 할 수 있습니다. 그렇다면 전달 된 매개 변수가 얼마나 큰 '중요'입니까? 메모리/CPU의 관점에서 말입니다.자바에서 전달 매개 변수 최적화

+3

참조 사본을 전달하고 있습니다. 참조 된 객체의 유형은 중요하지 않습니다. – jlordo

+0

이미 제공된 답변 이외에 유효성 검사가 이메일 주소가 아닌 그 사람의 더 많은 정보를 고려한다면'Person' 객체를 전달하는 것이 좋습니다. 이것은 더 많은 유형 안전을 허용합니다. OTOH, 메일 주소 만 확인하려는 경우 person 객체를 전달하지 마십시오. 그러면 verify 메소드가 다시 사용할 수 없게됩니다. –

답변

4

아니요, 여러분이 지나가고있는 모든 것이 문제의 객체에 대한 참조이므로 중요하지 않습니다. 자세한 내용은 this question and answers을 참조하십시오.

메서드 호출이 원격 인 경우를 제외하고 전체 개체 그래프를 serialize해야합니다. 이 작업에 소요되는 시간은 필드 수와 데이터 양에 따라 다릅니다.

0

javaPerson의 전체 개체를 전달하면 해당 개체의 주소 만 전달하면됩니다. 그래서, 여러분은 전체 객체를 다루지 않고, 단지 참조 만합니다.

이 경우 성능면에서 어떤 이메일이 전달되는지는 중요하지 않습니다. 하나의 이메일 주소 또는 해당 이메일이 포함 된 person 개체입니다.

반면에 그것은 나중에 어떻게 그 방법을 사용할 것인가에 달려 있습니다. 이 방법은 추상적 인 이메일로 뭔가를 수행 utility 방법의 일종 있다면, 그것은 단지 String 매개 변수를 전자 메일로 전달하는 좋은 인터페이스 솔루션이 될 것입니다.

0

자바 전달 매개 변수는 값으로 호출하므로 참조로 호출하지 않습니다. 그래서 객체의 경우 그 패스는 오직 person 클래스의 주소 값이다.