Generic Class (Basic)
·
Programming/Java
제네릭이란?데이터 타입을 컴파일 시 결정 제네릭 클래스- 인스턴스 생성 시 자료형 결정- compiler가 알 수 있게, T로 구분! 제네릭 이전의 코드프로그래머의 실수 발견1. 컴파일 오류2. 예외 발생 제네릭 이전의 코드는 프로그래머의 실수를 컴파일 오류, 예외로 발견하기 어렵다.  제네릭 클래스class Box { private T ob; public void set(T o){ ob= o; } public T get(){ return ob; }} 제네릭의 구성1. Type Parameter(타입 매개변수): Box에서 T2. Type Argument(타입 인자): Box에서 Apple3. Parameterized Type(매개변수화 타입)Box  프로그래머의 실수가..
Collection
·
Programming/Java
Collection- 사전적 의미: 요소를 수집해서 저장하는 것- Java에서는 Collection이란 데이터의 집합, 그룹을 의미 Collection Framework데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것Keyword- 자료구조- 알고리즘 - 구조화- 클래스 구현주요 인터페이스 간 상속 관계주의Map은 Collection와 독립적이다
원시(Primitive) 타입과 참조(Reference) 타입
·
Programming/Java
primitive type- 실제 데이터 값을 저장하는 타입- 스택에 값 존재 reference type- 인스턴스 번지 값(주소 값)을 저장하는 타입- 스택에 번지 값 존재- 힙에 실제 값(인스턴스) 존재 reference 타입을 사용하는 이유는?1. null을 담을 수 있는가?- primitive type: X- reference type: O 2. 제네릭 타입을 사용할 수 있는가?- primitive type: X- reference type: O primitve 타입을 사용하는 이유는? 1. 접근 속도primitive type: 스택에 메모리 존재reference type: 참조 값은 스택, 실제 값은 힙에 존재. 실제 값 필요할 때마다 언박싱 과정 필요. 2. 차지하는 메모리 양primitive..
Default Method in Interface
·
Programming/Java
자바8에서는 메소드 구현을 포함하는 인터페이스를  정의할 수 있다. default method인터페이스의 기본 구현을 제공한다.기존 인터페이스를 구현한 클래스는 자동을 인터페이스에 추가된 디폴트 메소드를 상속 받게 된다. default 메서드가 나온 이유인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움 (인터페이스 : 추상 메서드 집합)인터페이스의 변경의 전파를 최소화할 수 있다.interface Repairable{ boolean isfinished(); // 추상 메서드}interface Repairable{ default boolean isfinished(){}; // Default 메서드(추상 메서드 X), 구현도 가능함 } 디폴트 메서드를 이용하면 인터페이스의 기본 구현을 그대로 상속하..
JAVA 25(3) 어노테이션
·
Programming/Java
어노테이션의 장점 어노테이션= 컴파일러에게 메시지를 전달하는 것 컴파일에 영향은 X 1. 컴파일러에게 코드 에러 체크할 수 있도록 정보 제공 2. 개발툴이 빌드나 배치 시 코드 자동 생성할 수 있도록 정보 제공 3. 런타임 시, 특정 기능을 실행하도록 정보 제공 @Override 오버라이딩할 메소드를 위 처럼 실수로 잘못 작성했다면 오버로딩 된다. 하지만 실수이므로 누군가 알려줘야 한다. 어노테이션 @Override을 명시하면, 컴파일러가 확인 후 에러 메시지를 출력해 준다. @Deprecated 더 이상 사용하지 않으나, 하위 호완성을 위해서 제공함을 의미 구현하거나 호출됐으면, 컴파일러가 @Deprecated 확인하고 메시지를 통해 알려 준다. @SupressWarnings= 경고를 꺼! 위의 예제에..
JAVA 22(2) 제네릭 2
·
Programming/Java
와일드카드 제네릭 클래스의 객체를 메소드의 매개변수로 받을 때, 그 객체의 타입 변수를 제한하는 것을 말한다. public static void peekBox(Box box){ System.out.printIn(box); } public static void peekBox(Box box){ System.out.printIn(box); } //와일드카드는 제네렉 메소드가 아니다. //작동 원리가 다를 뿐, 기능은 같다. 와일드카드 코드가 더 간결해 보인다. 문서에서도 제네릭 메소드보다 와일드카드를 권고한다.
JAVA 22(1) 제네릭 2
·
Programming/Java
제네릭 클래스와 상속 제네릭 클래스는 상속이 가능하다. 단, 타입 인자가 같아야 한다. 위의 예제에서 타입 인자가 Integer로 통일되면 상속이 가능하지만 서로 다른 타입 인자를 가지고 있으면 상속이 불가능하다. 타겟 타입(=참조변수의 형) T에 전달되는 자료형을 결정 짓기 위한 자료형의 정보 제네릭 메소드와 일반 메소드의 차이 T가 다르면 전달이 불가능
JAVA 21(3) 제네릭 1
·
Programming/Java
타입 인자 제한의 효과  타입 인자를 인터페이스로 제한 타입 인자를 클래스와 인터페이스로 제한타입 인자는 클래스를 상속하고 인터페이스를 구현해야 한다. 제네릭 메소드 정의클래스 전부가 아닌 하나의 메소드 대해 제네릭 정의제네릭 메소드에서 T는 메소드가 호출될 때 결정된다. 원래 는 클래스에 있었다. 하나의 메소드를 대상으로 제네릭 선언하기 위해서 클래스에서 메소드로 내려왔다고 생각하면 이해하기 편하다. 상속도 마찬가지다.
JAVA 21(2) 제네릭 1
·
Programming/Java
제네릭 기반 클래스 정의 인스턴스 생성 시 T를 결정한다. 컴파일러는 를 확인하고 제네릭 기반 클래스를 구분한다. - 타입 매개변수(get)=T - 타입 인자(give)=Apple - 매개변수화 타입(인자를 전달 받아서 새로 만들어진 타입)= Box 위의 코드는 프로그래머의 실수가 컴파일 단계에서 발견됐다. 코드의 안정성을 높여준다. 다중 매개변수 기반 제네릭 클래스 정의 타입 매개변수 이름 규칙 일반적인 관례 - 한 문자로 이름을 짓는다. - 대문자로 이름을 짓는다. 보편적인 선택 - E: Element - K: Key - N: Number - T: Type - V: Value 타입 인자로 기본 자료형이 올 수 없다. 하지만 오토 박싱/언박싱으로 해결 가능하다. 다이아몬드 기호 참조 변수 선언을 통해 ..
JAVA 21 (1) 제네릭 1
·
Programming/Java
제네릭의 이해 신발을 만드는 공장을 가정해보자. 신발을 만들기 위한 틀이 있을 것이고 색을 달리해서 다양한 신발을 만들 수 있을 것이다. 여기서 틀이 제네릭과 같은 개념이고, 색은 자료형과 같다. 제네릭 이란? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 제니릭 이전의 코드 class Apple{ public String toString(){ return "I'm an apple"; } } class Orange{ public String toString(){ return "I'm an orange"; } } class Box{ private Object obj; public void set(Object o){ obj=o; } public Object get(Object o){ retur..