티스토리 뷰

JAVA

5. 생성자 레퍼런스

박중수 2015. 3. 29. 19:37

메소드의 이름이 new라는 것을 제외하면 메소드 레퍼런스와 유사하다.

클래스명::new로 사용한다. 예를 들자면 Object::new 는 Object 객체의 생성자를 의미한다


문자열 리스트를 버튼 리스트로 만들 수 있다.

List<String> label = ....; //이미 값이 들어있다.

Stream<Button> stream = label.stream().map(Button::new);

List<Button> btnList = stream.collect(Collectors.toList());


이렇게 하면 label에 있는 문자열이 들은 Button의 리스트가 생성된다.



또한 배열도 생성자 레퍼런스를 만들 수 있다.

String::new는 파라미터가 1개인 생성자 레퍼런스다.

size->new String[size]; 와 같은 의미다.


stream 인터페이스는 Object의 배열을 리턴하는 toArray() 메소드를 가지고 있다.

필요로 하는 객체의 배열을 받고자 하면


stream.toArray(객체명[]::new);


이렇게 사용하면 된다.




예를 들어 Button의 배열을 받고 싶다면


Button[] btns = stream.toArray(Button[]::new);


라고 치면 버튼의 배열을 얻을 수 있다.


하지만 이 코드에는 배열의 사이즈를 유추할 수 있는 곳이 없는게 미스테리. 


내일 일과시간에 프로젝트에 적용해보면서 실험해봐야겠다.


답이 나온다면 바로 업데이트 해야지

'JAVA' 카테고리의 다른 글

7. default 메소드  (0) 2015.03.30
6. 변수 유효범위  (0) 2015.03.29
4. 메소드 레퍼런스  (0) 2015.03.29
3. 함수형 인터페이스  (0) 2015.03.29
2. 람다 표현식  (0) 2015.03.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함