예제코드에서 다운로드는 첫 페이지참조
각각의 실습코드는 SUB에 해당하는 폴더를 참조하세요.

※ 문법을 1, 2로 나눈 의미는 없습니다. oop개념이 없는 상태에서 예시를 들기 어려운 문법들을 따로 정리했을 뿐입니다.

제네릭a_Generic

함수에서의 제네릭A

<T> void print(T n) { ... }

클래스에서의 제네릭B

class Gen<T> { ... }

제네릭의 범위 한정C, D

함수의 간략화b_Lambda

람다식A

람다식은 함수명이 굳이 필요하지 않은 1회성 함수에 관하여 선언하지 않고 사용하는 문법
() -> { ... }
(int x) -> { return x; }

레퍼런스B

::기호를 이용하여 함수(메서드)를 반환한다.
interfase A { abstract void M(); }
class B { void N() { ... } }
A a = B::N;
A a = System.out::println;
a.print("test program");

예제C

아래 리스트에서, apple리스트, red리스트를 만들고 싶다.
      List origin = Arrays.asList(
  new Fruit("Apple", "Red"), 
  new Fruit("Orange", "Orange"), 
  new Fruit("banana", "yellow"),
  new Fruit("Orange", "Orange"),
  new Fruit("Strawberry", "Red"),
  new Fruit("Apple", "Green"),
  new Fruit("Apple", "White"),
  new Fruit("Cherry", "Red"));
      
    
기존의 코드가 처리하던 방식은 이렇다.C1
      static List extractName(List fruits, String fruitType) {
  List resultList = new ArrayList<>();
  for (Fruit fruit : fruits) {
    if (fruit.getName() == fruitType) {
      resultList.add(fruit);
    }
  }
  return resultList;
}

static List extractColor(List fruits, String color) {
  List resultList = new ArrayList<>();
  for (Fruit fruit : fruits) {
    if (fruit.getColor() == color) {
      resultList.add(fruit);
    }
  }
  return resultList;
}
      
    
변경된 사항은 다음과 같다.C2
      List apple = extract(origin, (f) -> (f.getName() == "Apple"));
List red = extract(origin, (f) -> (f.getColor() == "Red"));
      
    

어노테이션c_Annotation

어노테이션은 코드의 부가정보를 기술하는 문법으로 @ 뒤에 예약어를 작성합니다. Java에서 지원하는 대부분의 어노테이션은 주석으로써의 의미가 강하지만, 크로스 플랫폼에서 외부에서 코드를 분석하게 하는 요소로도 사용됩니다.