암시 적으로 이것을 반환하는 Java void 메소드


20

"this"유형을 리턴하는 setter 메소드에 대한 SO에 대한 몇 가지 토론이 있습니다. 그리고 java 7이 이것을 반환하는 void 메소드를 제안한 것처럼 보입니다. 그러나이 제안은 Java 7 기능으로 만들 수 없었습니다. 이 제안이 Java 8 이상으로 옮겨 지거나 완전히 폐기되었는지 찾을 수 없습니다. 그렇습니까?

참조 링크-https: //stackoverflow.com/questions/31584/design-java-and-returning-self-reference-in-setter-methods


3
질문에서 언급 한 토론에 대한 링크를 제공하여 다른 사람들에게 유용하고 질문을 더 잘 이해하는 데 도움이 될 것입니다.
ManuPK

내 질문을 편집
Tarun

답변:


11

그 출처를 찾을 수없는 것 같지만이 기능이 완전히 삭제되었다고 생각합니다. 내가 생각할 수있는 많은 이유가 있습니다 :

  • 성능 - void이제 각 메소드에는 추가 리턴 opcode가 있으며이 메소드가 호출되는 모든 위치는 pop실제로 메소드 체인을 사용하지 않는 한 내재적이어야합니다.

  • 이전 버전과의 호환성 -이 기능에 대해 컴파일하면 모든 void방법 의 계약 이 변경 되어 코드가 갑자기 호환되지 않습니다

물론 이것은 컴파일러에 의해 구현 될 수도 있습니다 ( 메서드를 호출 void합니까? 아마도 this이것을 암시 적으로 추가하겠습니다 ).이 접근법의 단점이 무엇인지 모릅니다.


1
컴파일러는이 기능을 지원해야하므로 (호출 코드가 컴파일 됨) 호출 된 객체를 저장하고 호출 메소드를 변경하지 않고 다시 사용할 수 있습니다.
Peter Lawrey

이러한 성격의 OpenJDK의 기능은 이제 JEP (JDK Enhancement Proposals)로 처리되며 실제로 더 이상 나열되지 않습니다 (그리고 한동안 논의하지는 않았습니다).
Martijn Verburg

3

나는 이것이 2009 프로젝트 코인의 화신을 위해 공식적으로 제안 된 것으로 생각하지 않습니다. 이 페이지는 모든 제안을 나열하기 위해 준비되었으며 해당 제안을 볼 수 없습니다.

제안되지 않았다면 고려되지 않았을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.