푸린세스

생성자의 메서드 참조. 본문

카테고리 없음

생성자의 메서드 참조.

푸곰주 2022. 3. 29. 10:26
package ex14;

import java.util.function.Function;
import java.util.function.Supplier;

public class Ex14_04 {

	public static void main(String[] args) {
		//Supplier는 입력x, 출력o
//		Supplier<MyClass> s = () -> new MyClass();

		
//		MyClass mc = s.get();  //supplier로부터 get하면 MyClass객체반환
//		System.out.println(mc); //객체를 출력
////		밑에 한문장이로 줄인것.		
//		System.out.println(s.get());
//		System.out.println(mc); //헤시코드 다름, 또다른 객체가 만들어진것.
		//supplier의 메소드?? get()이다....

		//매서드 참조로 바꾸기.
//		Supplier<MyClass> s = 클래스이름::메서드이름;
//		Supplier<MyClass> s2 = MyClass::new;
//		System.out.println(s2.get());
//		
		Function<Integer, MyClass> f = (i)->new MyClass(i);
		Function<Integer, MyClass> f2 = MyClass::new;
		
		MyClass mc2 = f.apply(100);
		System.out.println(mc2);
		System.out.println(mc2.iv);
		System.out.println(f.apply(100).iv);
		
		//Function에 쓰는 메소드는 apply적용하는것
		
		
//		Function<Integer, int[]> f3 = (i) -> new int[i];
//		Function<Integer, int[]> f3 = 클래스이름::메서드이름;
		Function<Integer, int[]> f3 = int[]::new;
		int[]arr = f3.apply(100);
		System.out.println("arr.length=" + arr.length);
		System.out.println(f3.apply(100).length);
	}

}

class MyClass{
	int iv;
	
	MyClass(int iv){
		this.iv = iv;
	}
}