학습 기록/언어 기본

람다 관련

서버관리자 페페 2024. 3. 16. 00:46

sP ; 언제나 @funtionalInterface + public interface

 

3가지 참여자가 있다

  • 인터페이스
  • 인터페이스를 args로 사용하는 메소드
  • 메인단

-

 

람다는 그냥 arg로 사용되는 익명 구현 객체이며, 그것의 간편한 작성법이다

컴파일 시 람다를 익명 구현 객체로 변환해 컴퓨터가 자각한다

 

-

 

메소드에서는 인자 공급만 하고, 

Overriding은 나중에, main단에서 사용시 (람다 형식으로) 하는 것  

 

*왜 바로 위인 method단을 건너뛰고, 메인단에서 사용하는 두 단계 위에서 재정의하나?

> 익명 구현 객체이므로

> 그리고 메인은 사실 method를 사용만 하는 역할이므로, 메소드를 static으로 불러오거나. 기껏해야 메소드를 가진 class를 작성하는 것 뿐이다(클래스객체.메소드)

 

-

 

abstract method의 x y 인자가 있냐 없냐에 따라 형식이 달라짐 / 그것 기준으로 공부할 것

 

-

 

메소드단에서의 x y 인자 공급

  • 공급시에 x y 등은 바로 숫자 혹은 “String” 등으로 작성하여 공급한다
  • 인자가 없다면 당연히 메소드단에서 공급할 필요 없다

-

 

메인단에서의 사용

- 메소드(익명구현객체=람다)

 

-

 

return이 있는 Lambda

  • 인터페이스에서의 abstract method 정의는 똑같이 단순하다
  • 다만 메인단에서 container로 메소드의 결과를 받아야 한다

 

*왜 메소드에서 return이 void이지?

  • 리턴할 것을 똑같이 return해도 되지만, plate에 받아서 출력해도 무방
  • 출력은 action에서 사용한 것 그대로 나온다. 중요한 것은 calcuable만 재정의하는 것(나머지는 그대로 간다)
  • 메소드는 추상 메소드를 그대로 사용할 수도 있고, 여러 줄 사이에 끼워져 넣을수도 있다. 람다가 하는 것은 ‘추상 메소드’ 만 오버라이딩 작업하는 것
  • 추상메소드 작업 후의 출력이나, 추상메소드 전의 추상메소드로의 인자 공급은 그대로 유지되어 action 호출하면 딸려서 실행된다

'학습 기록 > 언어 기본' 카테고리의 다른 글

멀티-스레드  (0) 2023.12.24
if는 pipeline or thesis  (0) 2022.12.06
공간 influx structure / exit strategy  (0) 2022.12.06
while : 회전- 수축 공간  (0) 2022.12.06
for 시행 공간  (0) 2022.12.06