공부한 것
C++의 템플릿
제네릭 클래스 = 원시 타입
T = 타입 변수
static 멤버는 사용불가
배열 불가
타입변수 여러 개 가능
타입변수 와일드카드 가능 - <?>: 제한없음
와일드카드 응용부터 복잡해짐... 나중에 다시 공부하고 여기까지
제네릭 클래스 선언 예시
public class ClassName { ..
public T t; // 유연한 필드 타입
public T method1() { ... } // 유연한 메소드
public void method2(T a) { ... }
interface f<T> { boolean myMethod(T t); }
람다식 활용 예시
public class Main {
public static void main(String[] args) {
Runnable task = () -> {
int sum = 0;
for (int i = 0; i < 50; i++) {
sum += i;
System.out.println(sum);
}
System.out.println(Thread.currentThread().getName() + " 최종 합 : " + sum);
};
Thread thread1 = new Thread(task);
thread1.setName("thread1");
Thread thread2 = new Thread(task);
thread2.setName("thread2");
thread1.start();
thread2.start();
}
}
Runnable 람다식을 활용하자.
어려웠던 것

회고, 생각
스레드 파트는 C++에서 멀티스레딩 개발 경험이 있었어서 러프하게 넘어갔음.
대신 Java 스레딩 제어 방식에 대해 내일 한 번 정리해야 할 듯하다.
전체적으로 내가 평소 개발에 활용하지 못하는 고급(?) 문법들이라 정말 열심히 읽었음.
옛~날에 (대략 10년 전?) 자바 공부할 때 한 번씩 접했던 키워드들이긴 했다. 그 땐 전혀 이해가 안되고 다룰 자신이 없었어서 크게 이해하지 못하고 넘어갔었다.
아무튼 오늘에서야 어떤 기능들인가-어떻게 사용하나를 알게되어
발전하는 내가 되고 있는 거 같은 기분이 든다!
하지만 스코프어쩌고는 무슨 말인지.. 영어로 되어있어서 오늘은 해석하지 않겠다. 피곤함😅
그리고 스트림파트는 읽을 때 집중이 안됐었는지.. 어렵다고 잠시 패스했는데
찬찬히 읽어보니 쉽더라. 적용할 수 있을 것 같음.
오늘 예외처리 (try-catch, extends Exception) 실습해봤는데 OOP 프로그래밍에 큰 도움이 되었음
이론적으로는 이해가 가는데, 직접 객체마다의 관계를 설계하는 게 헷갈릴 것 같음... <- 아마 이게 가장 큰 산이 될 것 같다
끝!