반응형

자바에서는 클래스를 사용해서 직접 메소드를 참조시켜 메소드를 사용할 수 있는데, 이때 "::" 기호를 사용합니다.

 

주로 List데이터를 출력할때 System.out.println을 통해 확인하는데

참조 연산자를 사용하면 쉽게 데이터를 확인해볼 수 있습니다.

 

클래스의 메소드 참조

단순 반복문 출력

import java.util.ArrayList;
import java.util.List;

public class MethodRef {

	public static void main(String[] args) {
		List<String> names = new ArrayList<String>();
		names.add("Matilda");
		names.add("Leon");
		names.add("Naples");
		names.add("Harry Potter");
		names.add("Iron Man");
		
		for(int i=0; i<names.size(); i++) {
			System.out.println(names.get(i));
		}
	}

}

 

보통 반복문 for문을 활용하여 데이터를 확인하였을텐데,

forEach문을 사용하면 int i와 같은 변수 선언도 필요없이 바로 확인 할 수 있습니다.

names.forEach(d->
	System.out.println(d)
);

 

여기에 메소드 참조(::)를 사용하면 더욱 간단하게 확인 할 수 있습니다.

names.forEach(System.out::println);

 

간단한 예제라 사실 큰 의미는 없지만 개발하면서 빠르게 데이터를 확인해볼때, 메소드 참조를 통해 콘솔에 쉽게 찍을 수 있었습니다.

 

 

System.out 클래스의 println메소드 사용

아래는 forEach와 메소드참조로 변경한 전체 소스입니다.

import java.util.ArrayList;
import java.util.List;

public class MethodRef {

	public static void main(String[] args) {
		List<String> names = new ArrayList<String>();
		names.add("Matilda");
		names.add("Leon");
		names.add("Naples");
		names.add("Harry Potter");
		names.add("Iron Man");
		
		names.forEach(System.out::println);
	}

}

데이터 출력

 

클래스의 메소드 사용

처음 더블콜론(::)을 설명할 때 클래스를 직접 사용하고 메소드를 참조시킨다고 하였는데, 관련된 예제를 보겠습니다.

import java.util.ArrayList;
import java.util.List;

public class RamdaT {
	
	private void someFunction(String str) {
		System.out.println(str);
	}

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("Apple");
		list.add("Banana");
		list.add("Cherry");
		
		list.forEach(System.out::println);
		
		System.out.println();System.out.println();System.out.println();
		
		list.forEach((new RamdaT())::someFunction);
	}

}

 

RamdaT라는 클래스에서 someFunction()이라는 함수를 작성하고 파라미터로 전달받은 str변수를 sysout을 통해 출력해주는 예제입니다.

 

List 컬랙션에 3개의 과일 리스트를 추가하고 출력하는데 처음 forEach부분은 System.out클래스의 println메소드를 통해 출력시킨 부분이고, 두번째는 이번 예제 클래스에서 정의한 RamdaT클래스를 사용하고 someFunction이라는 메소드를 직접 사용하였습니다. 람다에 의해 사용된 변수는 자연스럽게 someFunction함수의 파라미터로 처리되어 아래와 같은 출력을 확인 할 수 있습니다.

 

클래스의 메소드 참조

반응형