Hello

Java 메서드 참조, 생성자의 메서드 참조

by 볼빵빵오춘기

메소드 참조(method refernce)

클래스 이름 :: 메서드 이름
  • 하나의 메서드만 호출하는 람다식은 ‘메소드 참조’로 간단히 할 수 있다.
더보기

※ 특정 객체 인스턴스메서드 참조는 잘안쓴다.

static 메서드 참조

생성자의 메서드 참조

  • 생성자에 매개변수가 없는 경우

  • 생성자에 매개변수가 있는 경우

 

  • 배열과 메서드 참조

 

예제 

예제 코드1 

더보기
import java.util.function.Function;

public class Try {
	
	public static void main(String[] args) {
//    람다식으로 작서했을 경우		
//		Function<String,Integer> f =(String s) -> Integer.parseInt(s);
// 		위에 람다식으로 작성한 부분 주석 처리 후 메서드 참조로 변경 하면 
		Function<String,Integer> f = Integer::parseInt;
		System.out.println(f.apply("100")+200);
	}
	
}

예제 코드2

더보기
import java.util.function.Supplier;

public class Try {
	
	public static void main(String[] args) {
		
		// 람다식일 때 
//		Supplier<MyClass> s = () -> new MyClass();
		// 메서드 참조로 변경 했을 때 
 		Supplier<MyClass> s = MyClass::new;
	
		MyClass mc = s.get();
		System.out.println(mc);
		System.out.println(s.get()); // 여기서 s.get()은 또 다른 객체가 만들어진것
	}
	
}

class MyClass {}

예제 코드3

더보기
import java.util.function.Function;

public class Try {
	
	public static void main(String[] args) {
		
		// 아래클래스 몸 통 작성후 Supplier 사용 불가 따라서주석처리하고 
		// Supplier<MyClass> s = () -> new MyClass();
		// 아래와 같이 코드 작성해주기 
		Function<Integer, MyClass> s = (i) -> new MyClass(i);
		
		// Fucntion에는 get()이 아니 apply()
		MyClass mc = s.apply(100);
		System.out.println(mc);
		System.out.println(mc.iv);
		
		
		
	}
	
}

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

예제 코드4

더보기
import java.util.function.Function;

public class Try {
	
	public static void main(String[] args) {
		
		// 아래클래스 몸 통 작성후 Supplier 사용 불가 따라서주석처리하고 
		// Supplier<MyClass> s = () -> new MyClass();
		// 아래와 같이 코드 작성해주기 
		Function<Integer, MyClass> s = (i) -> new MyClass(i);
		
		// Fucntion에는 get()이 아니 apply()
		MyClass mc = s.apply(100);
		System.out.println(mc);
		System.out.println(mc.iv);
		
		Function<Integer,int[]> s2 = (i) -> new int[i];
		int[] arr = s2.apply(100);
		System.out.println("arr.length : "+arr.length);
		
		
	}
	
}

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

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기