JAVA 66

중첩클래스와 중첩 인터페이스

중첩클래스 : 클래스 멤버로 선언된 클래스 class ClassName{ class NestedClassName{ } } 중첩 인터페이스: 클래스 멤버로 선언된 인터페이스 class ClassName{ interface NestedInterfaceName{ //중첩 인터페이스 } } 용도 해당 클래스에서만 사용하는 클래스와 인터페이스가 필요할떄 활용된다. 중첩 인터페이스는 UI 컴포넌트 내부 이벤트 처리에 많이 활용된다.

JAVA 2022.10.15

람다식

y = f(x) 형태의 함수로 구성된 프로그래밍 기법 데이터를 매개값으로 전달하고 결과를 받는 코드들로 구성 객체지향 프로그래밍 보다는 효율적인 경우 대용량 데이터의 처리시에 유리 데이터 포장 객체를 생성후 처리하는 것 보다, 데이터를 바로 처리하는 것이 속도에 유리 멀티코어 cpu에서 데이터를 병렬 처리하고 취합할 때 객체보다는 함수가 유리 코드가 매우 간결해진다. 컬렉션요소(대용량 데이터)를 필터링 또는 매핑해서 쉽게 집계할 수 있다. /* 함수적 인터페이스 : 추상메소드 1개만을 구성요소로 하는 인터페이스. 목적? 람다식문법을 사용 */ @FunctionalInterface // @명령어 : 어노테이션. 인터페이스에서 추상메소드를 반드시 1개만 사용가능. // 추상메소드를 더 추가시 문법적으로 에러..

JAVA 2022.10.12

제네릭 타입의 상속과 구현

// 제네릭 타입 선언 public class Product { private T kind; private M model; public T getKind() { return this.kind;} public M getModel() { return this.model;} // setKind(Tv kind) public void setKind(T kind) { this.kind = kind;} // setModel(String model) public void setModel(M model) { this.model = model;} } class Tv {} 상속 클래스 //제네릭 부모클래스 상속시 자식클래스는 부모의 타입파라미터를 반드시 사용해야 한다. 추가도 할수있다. public class ChildPr..

JAVA 2022.10.12

제네릭 와일드카드 타입

코스 과정 클래스 //1) 과정이름과 수강생을 배열로 저장하는 구조 public class Course { private String name; // 과정이름 private T[] students; // 수강생 명단. Person[] students public Course(String name, int capacity) { this.name = name; students = (T[])(new Object[capacity]); // Person[] (new Object[5]) } public String getName() { return name;} public T[] getStudents() { return students;} // Person[] getStudents() public void add(..

JAVA 2022.10.12

제한된 타입 파라미터

// Number 추상클래스 : Byte, Short, Integer, Long클래스의 상위클래스 public class Util { // T extends Number : Number클래스 이거나 Number클래스를 상속, 구현한 클래스만 사용가능. (상위타입 제한) // T extends 인터페이스 : implements 키워드 사용안함. public static int compare(T t1, T t2) { double v1 = t1.doubleValue(); double v2 = t2.doubleValue(); return Double.compare(v1, v2); } } public class BoundedTypeParameterExample { public static void main(Str..

JAVA 2022.10.12

제네릭 메소드의 멀티 파라미터타입을 사용한 비교

public class Util { //제너릭 메소드 정의 : 다양한 데이타타입들을 사용하고 싶은 경우. // 비교목적 : 하나의 데이타타입에 해당하는 의미만 비교목적으로 사용했었는데 // 제너릭인 경우에는 여러 데이타타입들 비교목적으로 사용가능하다. public static boolean compare(Pair p1, Pair p2) { boolean keyCompare = p1.getKey().equals(p2.getKey()); boolean valueCompare = p1.getValue().equals(p2.getValue()); return keyCompare && valueCompare; } } public class Pair { private K key; private V value; pu..

JAVA 2022.10.12

제네릭 메소드

public class Util { /* 제네릭 메소드 문법구성 public static 리턴타입 메소드명(타입 매개변수) { return 변수; } 일반메소드 문법구성 public static 리턴타입 메소드명(타입 매개변수) { return 변수; } */ //제네릭 메소드 정의 : 메소드에 타입파라미터 작업. //메소드의 리턴타입 또는 매개변수에 사용하고자 하는 타입을 지정. public static Box boxing(T t){ Box box = new Box(); box.set(t); return box; } } // 제네릭 클래스 // : Integer public class Box { private T t; // 필드 Integer t; public T get() { return t;} //..

JAVA 2022.10.12