diff --git a/RxJava/practice/src/main/java/org/example/ex07/CarInventory.java b/RxJava/practice/src/main/java/org/example/ex07/CarInventory.java new file mode 100644 index 00000000..cdcaa228 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex07/CarInventory.java @@ -0,0 +1,14 @@ +package org.example.ex07; + +public class CarInventory { + private int incomingCount; + private int totalCount; + + public CarInventory(int totalCount) { + this.totalCount = totalCount; + } + + public int getExpectedTotalCount(int incomingCount){ + return totalCount + incomingCount; + } +} diff --git a/RxJava/practice/src/main/java/org/example/ex07/ClassNameInstanceMethodEx.java b/RxJava/practice/src/main/java/org/example/ex07/ClassNameInstanceMethodEx.java new file mode 100644 index 00000000..b6f5dd20 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex07/ClassNameInstanceMethodEx.java @@ -0,0 +1,18 @@ +package org.example.ex07; + +import java.util.function.Function; + +/** + * Class Name::instance method 메서드 레퍼런스 예 + */ +public class ClassNameInstanceMethodEx { + public static void main(String[] args) { + Function f1 = car -> car.getCarName(); + String carName1 = f1.apply(new Car("트래버스")); + System.out.println(carName1); + + Function f2 = Car::getCarName; + String carName2 = f2.apply(new Car("팰리세이드")); + System.out.println(carName2); + } +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/ex07/ClassNameStaticMethodEx.java b/RxJava/practice/src/main/java/org/example/ex07/ClassNameStaticMethodEx.java new file mode 100644 index 00000000..406d8c53 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex07/ClassNameStaticMethodEx.java @@ -0,0 +1,26 @@ +package org.example.ex07; + +import java.util.function.Function; + +/** + * Class Name::static method 메서드 레퍼런스 예 + */ +public class ClassNameStaticMethodEx { + public static void main(String[] args) { + // 람다 표현식 메서드 레퍼런스로 축약 전 + Function f1 = (String s) -> Integer.parseInt(s); + Integer result1 = f1.apply("3"); + System.out.println(result1); + + // 람다 표현식 메서드 레퍼런스로 축약 전 + Function f2 = s -> Integer.parseInt(s); + Integer result2 = f2.apply("3"); + System.out.println(result2); + + // 람다 표현식을 메서드 레퍼런스로 축약 + Function f3 = Integer::parseInt; + Integer result3 = f3.apply("3"); + System.out.println(result3); + + } +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/ex07/ConstructorReferenceEx.java b/RxJava/practice/src/main/java/org/example/ex07/ConstructorReferenceEx.java new file mode 100644 index 00000000..e5d5248f --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex07/ConstructorReferenceEx.java @@ -0,0 +1,20 @@ +package org.example.ex07; + +import org.example.common.Car; + +import java.util.function.Function; + +/** + * Constructor::new 예 + */ +public class ConstructorReferenceEx { + public static void main(String[] args) { + Function f1 = s -> new Car(s); + Car car1 = f1.apply("콜로라도"); + System.out.println(car1.getCarName()); + + Function f2 = Car::new; + Car car2 = f2.apply("카니발"); + System.out.println(car2.getCarName()); + } +} diff --git a/RxJava/practice/src/main/java/org/example/ex07/ObjectInstanceMethodExample.java b/RxJava/practice/src/main/java/org/example/ex07/ObjectInstanceMethodExample.java new file mode 100644 index 00000000..9c43c5db --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex07/ObjectInstanceMethodExample.java @@ -0,0 +1,32 @@ +package org.example.ex07; + +import java.util.function.Function; +import java.util.function.IntUnaryOperator; +import java.util.function.UnaryOperator; + +/** + * Object::instance method 예 + */ +public class ObjectInstanceMethodExample { + public static void main(String[] args) { + final CarInventory carInventory = new CarInventory(10); + + Function f1 = count -> carInventory.getExpectedTotalCount(count); + int totalCount1 = f1.apply(10); + System.out.println(totalCount1); + + Function f2 = carInventory::getExpectedTotalCount; + int totalCount2 = f2.apply(20); + System.out.println(totalCount2); + + // T -> T + UnaryOperator f3 = carInventory::getExpectedTotalCount; + int totalCount3 = f3.apply(30); + System.out.println(totalCount3); + + // Integer -> Integer + IntUnaryOperator f4 = carInventory::getExpectedTotalCount; + int totalCount4 = f4.applyAsInt(40); + System.out.println(totalCount4); + } +} \ No newline at end of file