Back-End - Main Menu/Java 212

Ex14_RefMethod

package com.kook.ch14Project; //국쌤예제(교재에 없는 예제), 교재:566~567p 내용참조 import java.util.function.*; /* - 람다식의 블록(구현부)이(가) 하나의 메서드만 사용할때는 메서드참조로 간단하게 람다식을 생성한다. - 생성자 사용시에도 유사하게 사용한다. */ public class Ex14_RefMethod { public static void main(String[] args) { Function f = (String s) -> Integer.parseInt(s); //Function함수형 인터페이스의 추상메서드는 R apply(T t);을 구현하는 람다식을 사용 Function f1 = Integer::parseInt; /* - 블록이 ..

Ex14_02 - java.util.function패키지

package com.kook.ch14Project; import java.util.function.*; import java.util.*; public class Ex14_02 { public static void main(String[] args) { Supplier s; /* - 함수형 인터페이스 Supplier는 파라미터 없고 반환을 T형으로 하는 추상메서드 T get()를 갖는다. - 함수형 인터페이스 객체는 추상메서드를 매핑하는 람다식으로 생성 */ s = () -> (int)(Math.random() * 100) + 1; //99까지 돌기 때문에 +1해줌 Consumer c; /* - 함수형 인터페이스 Consumer는 파라미터가 1개이고 리턴값이 없는 추상메서드 - public abstra..

Ex14_01 - 함수형 인터페이스 타입의 매개변수, 반환 타입

package com.kook.ch14Project; public class Ex14_01 { public static void main(String[] args) { //MyFunction 인터페이스 객체는 람다식으로 추상메서드를 구현하여 대입 MyFunction01 f1 = () -> { System.out.println("f1.run()"); }; /* - 단축형 (아래코드처럼 한줄로도 작성가능하다.) MyFunction f1 = () -> System.out.println("f1.run()"); */ //예전처럼 익명의 객체 사용 MyFunction01 f2 = new MyFunction01() { @Override public void run() { System.out.println("f2.ru..

Ex14_fuctional - 함수형인터페이스(Functional Interface)

package com.kook.ch14Project; //국쌤(교재에 없는 예제-추가설명), 자바의정석(기초)-556p /* - 람다식을 사용하려면 @FunctionalInterface의 추상메서드에 매핑하는 람다식을 인터페이스 객체에 대입하여 사용 - 람다식 사용할시에는 람다식으로 구현한 추상메서드를 호출해야한다. */ public class Ex14_fuctional { public static void main(String[] args) { //익명의 객체를 생성하여 사용할시(기존의 자바 (구)방식) MyFunction f = new MyFunction() { @Override public int max(int a, int b) { return a > b ? a : b; } }; int res = ..

Ex14_anony

package com.kook.ch14Project; //국쌤(교재에 없는 예제-추가설명), 자바의정석(기초)-555p public class Ex14_anony { public static void main(String[] args) { //익명의 객체 obj를 생성 Object obj = new Object() { int max(int a, int b) { return a > b ? a : b; } }; /* obj.max(5,3); Object클래스에는 max메서드가 없어서 에러 람다식으로 익명 객체의 메서드를 구현하기 위해서는 아래 코드처럼 작성한다. 그러나, 람다식을 익명의 객체에 대입하려면 람다식만 대입해 주면 되나, (단, 익명의 객체는 추상메서드가 하나만 있는 인터페이스 객체여야 한다.) ..

Ex14RamdaWrite

package com.kook.ch14Project; //국쌤-(교재에 없는 예제-추가설명), java의정석 기초편 - 554p public class Ex14RamdaWrite { public static void main(String[] args) { /* - 람다식 작성예시 - 제일 쉽고 많이 쓰는 방법 (int a, int b) -> { return a > b ? a : b; } (int a, int b) -> a > b ? a : b - return없이 사용시에는 문장이 아닌 수식이므로 ;이 없음 {}안의 문장이 하나일시에는 { }생략이 가능하다. (단, return을 사용할시에는 생략이 불가능하다.) (a,b) -> a > b ? a : b - 파라미터의 데이터형은 생략가능(추론에선 데이터형 ..

Ex13_15 - wait()과 notify() - (2)

package com.kook.ch13Project; import java.util.*; public class Ex13_15 { public static void main(String[] args) throws Exception { Table table = new Table(); new Thread(new Cook(table), "COOK").start(); //"COOK"은 스레드명, Runnable객체를 한줄로 작성하여 생성 new Thread(new Customer(table, "donut"),"CUST1").start(); //작성시 배열에 있는 것을 써야한다. ex)"donut" new Thread(new Customer(table, "burger"),"CUST2").start(); //작성시..