상세 컨텐츠

본문 제목

[Java] Method Reference (메서드 레퍼런스의 4가지 케이스)

Java/Stream

by 찌니씨 2022. 10. 5. 10:52

본문

title_about_stream

 

✔ ClassName::staticMethodName

 클래스의 static method를 지정할 때

(Method명 만)

integer String
    String.valueOf();
String → integer
    Integer.parseInt();

 

Function <String, Integer> str2int = Integer::parseInt;
int five = str2int.apply("5");

ObjectName::instanceMethodName

이미 선언되어있는 객체의 instance method를 지정할 때

 

String str = "hello";
Predicate<String> equalsToHello = str::equals;
boolean helloEquealsWorld = equalsToHello.test("world");

ClassName::instanceMethodName

객체의 instance method를 지정할 때

(해당 클래스의 인스턴스를 매개변수(parameter)로 넘겨 메서드를 실행해주는 함수)

 

Function <String, Integer> strLength = String::length;
int length = strLength.apply("Hello world");
BiPredicate<String, String> strEquals = String::equals;
boolean result = strEquals.test("hello" , "world");

✔ ClassName::new

클래스의 constructor를 지정할 때

(Constructor Reference)

import Car;
public abstract class Car { //추상화
	protected String name;	//extends and get used...
	protected String brand;
	
	public Car(String name, String brand) {	//construct with two fields and asign
		this.name = name;
		this.brand = brand;
	}
	
	public abstract void drive(); //method name is drive
}
import Sedan;
public class Sedan extends Car { //Car 상속
	public Sedan(String name, String brand) {
		super(name, brand);
	}
	
	public void drive() {
		System.out.println("Driving a sedan " + name + " from " +brand);
	}
}
import Suv;
public class Suv extends Car {
	public Suv(String name, String brand) {
		super(name, brand);
	}
	
	public void drive() {
		System.out.println("Driving an SUV " + name + " from " +brand);
	}
}
import Van;
public class Van extends Car {
	public Van(String name, String brand) {
		super(name, brand);
	}
	
	public void drive() {
		System.out.println("Driving a van " + name + " from " +brand);
	}
}
public static void main(String[] args) {
//3) make Map
Map <String, BiFunction<String, String, Car>> carTypeToConstructorMap = new HashMap <>();
carTypeToConstructorMap.put("sedan", Sedan::new);
carTypeToConstructorMap.put("suv", Suv::new);
carTypeToConstructorMap.put("van", Van::new);

 

 

❗ 해당 내용은 Fastcampus의

25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM 강의를 들은 후 정리한 내용입니다.

댓글 영역