'2017/03/15'에 해당되는 글 12건
- 2017.03.15 소스 color 적용하기
- 2017.03.15 5. Generic (제너릭) 타입의 상속과 구현
- 2017.03.15 4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입
- 2017.03.15 3. Generic (제너릭) 메소드 - 사용예문1
- 2017.03.15 2. Generic (제너릭) 멀티 타입 파라미터
- 2017.03.15 2. Generic (제너릭) Type - 사용예문2
- 2017.03.15 2. Generic (제너릭) Type - 사용예문1
- 2017.03.15 자료구조 - 참고 URL
- 2017.03.15 1. Generic (제너릭) - 기본 개념
- 2017.03.15 1. Adapter - 기본 개념
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문1 (0) | 2017.03.15 |
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
5. Generic (제너릭) 타입의 상속과 구현 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문1 (0) | 2017.03.15 |
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
5. Generic (제너릭) 타입의 상속과 구현 (0) | 2017.03.15 |
---|---|
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문1 (0) | 2017.03.15 |
[ 2. Generic (제너릭) 멀티 타입 파라미터 ]
1. 정의
- 제네릭 타입은 두 개 이상의 멀티 타입 파라미터를 사용할 수 있는데, 이 경우 각 타입 파라미터를 콤마로 구분한다.
- 구문 : (class<K, V, ...>, interface<K, V, ...>)
2. 예제 설명
- 다음 예제는 Product<T, M> 제네릭 타입을 정의하고 ProductExam 클래스에서 Product<Tv, String> 객체와 Product<Car, String> 객체를 생성한다. 그리고 Getter와 Setter를 호출하는 방법을 보여준다.
3. 예문
a. Product.java
b. Tv.java
public class Tv { .. }
c. ProductMain.java
* 실행결과
generic.Tv:스마트 TV
generic.Car:Das Auto
4. java7부터 선언방법 간소화
a. 제네릭 타입 변수 선언과 객체 생성을 동시에 할 때 타입 파라미터 자리에 구체적인 타입을 지정하는 코드가 중복해서 나와 다소 복잡해질 수 있다.
자바 7부터 제네릭 타입 파라미터의 중복 기술을 줄이기 위해 다이아몬드 연산자 <>를 제공한다.
자바 컴파일러는 타입 파라미터 부분에 <> 연산자를 사용하면 타입 파라미터를 유추해서 자동으로 설정해 준다.
b. 자바 6 이전 버전에서 사용한 제네릭 타입 변수 선언과 객체 생성 코드
- Product<Tv, String> product<Tv, String>();
c. 자바 7부터는 다이아몬드 연산자를 사용해서 다음과 같이 간단하게 작성할 수 있습니다.
- Product<Tv, String> product<>();
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문1 (0) | 2017.03.15 |
1. Generic (제너릭) - 기본 개념 (0) | 2017.03.15 |
[ 2. Generic (제너릭) Type - 사용예문2 ]
1. 일반적인 개발방법
- 개발방법 : Box 클래스의 필드 타입이 Object 인데, Object 타입으로 선언한 이유는 필드에 모든 종류의 객체를 저장하고 싶어서다.
a. Box.java
b. Apple.java
c. BoxMain.java
d. 단점
- 이와 같이 Object 타입을 사용하면 모든 종류의 자바 객체를 저장할 수 있다는 장점은 있지만, 저장할 때 타입 변환이 발생하고, 읽어올 때도 타입 변환이 발생한다.
이러한 타입 변환이 빈번해지면 전체 프로그램 성능에 좋지 못한 결과를 가져올 수 있다.
2. Generic Type으로 개발방법
- 개발방법 : 타입 파라미터 T를 사용해서 Object 타입을 모두 T로 대체했다.
T는 Box 클래스로 객체를 생성할 때 구체적인 타입으로 변경된다.
a. Box.java
b. BoxMain.java
-> 최종 결과
Hi
11
* 참고, 타입 파라미터 T는 String 타입으로 변경되어 Box 클래스의 내부는 다음과 같이 자동으로 재구성 된다.
참고URL : http://palpit.tistory.com/665
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문1 (0) | 2017.03.15 |
1. Generic (제너릭) - 기본 개념 (0) | 2017.03.15 |
[ 2. Generic (제너릭) Type - 사용예문1 ]
1. Generic Type
- 예) class<T>
interface<T>
2. 일반적인 개발방법
- 개발방법 : StudentPerson과 EmployeeInfo가 같은 구조로 개발 된 소스
3. 단순 중복 제거
- 개발방법 : 중복 class제거
- 단, 위 소스에서 컴파일은 정상적으로 진행되지만 실행오류가 발생한다.
[ Person p1 =
new
Person(
"부장"
); ] 이 부분을 보면
클래스 Person의 생성자는 매개변수 info의 데이터 타입이 Object이다. 따라서 모든 객체가 될 수 있다. 그렇기 때문에 위와 EmployeeInfo의 객체가 아니라 String이 와도 컴파일 에러가 발생하지 않는다. 대신 런타임 에러가 발생한다. 컴파일 언어의 기본은 모든 에러는 컴파일에 발생할 수 있도록 유도해야 한다는 것이다. 런타임은 실제로 애플리케이션이 동작하고 있는 상황이기 때문에 런타임에 발생하는 에러는 항상 심각한 문제를 초래할 수 있기 때문이다.
위와 같은 에러를 타입에 안전하지 않다고 한다. 즉 모든 타입이 올 수 있기 때문에 타입을 엄격하게 제한 할 수 없게 되는 것이다.
4. Genric화 된 소스
- p1은 잘 동작할 것이다. 중요한 것은 p2다. p2는 컴파일 오류가 발생하는데 p2.info가 String이고 String은 rank 필드가 없는데 이것을 호출하고 있기 때문이다. 여기서 중요한 것은 아래와 같이 정리할 수 있다.
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
1. Generic (제너릭) - 기본 개념 (0) | 2017.03.15 |
Collection, Vector, Iterator, ArrayList, ... 등 모두 존재
[ 1. Generic(제너릭) - 기본 개념 ]
1. 기본 Generic
- 어떤 자료형이 들어갈지 정의하는 것
- 어떤 자료형이 들어 갈지 명시적으로 정의하고, get, set시 자료형을 제한할 수도 있다.
2. 기본 Generic 사용예
1. Generic 미 지정 시 : 매번 Casting을 해야 되므로 성능에 않좋다.
2. <String>이라는 Generic 지정 시 : 요소를 찾아올 때 Casting이 필요 없어 프로그램 성능이 향상 된다.
10. Generic Type 정의
- 제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.
- 여러 형식에 맞게 재사용할 수 있는 코드를 정의하는 기술이다.
- Generic 코드를 정의 할 때는 가상의 형식 이름을 <가상형식이름>처럼 정의하고 사용하는 곳에서 어떠한 형식에 관한 코드를 사용할 것인지 명시하여 사용하는 기법이다.
- 그래서 클래스 내부에서 사용할 데이터 타입을 미리 정의하지 않고
외부Class에서 사용시점에 지정하는 기법을 의미한다.
11. Generic Type 종류
- E : Element
- K : Key
- V : Value
- N : Number
- T : Type
- S, U, V etc - 2nd, 3rd, 4th types
12. Generic Type 와일드카드
- 정의 : 와일드카드는 알 수 없는 자료형일 때 작성하는 Generic type이다.
- <?> : 모든 객체 자료형, 내부적으론 Object로 인식 한다.
- <? super [자료형]> : 명시한 자료형의 상위 객체를 의미한다.
내부적으론 Object로 인식한다.
- <? extends [자료형]> : 명시한 자료형을 상속한 하위 객체를 의미한다.
내부적으론 명시한 자료형으로 인식한다.
11. Generic Type 사용예
[ Person.java ]
class Person<T>{ //Generic Type에 T 를 기술하여 데이터 타입을 지정하지 않는다.
public T info;
}
[ User.java ]
....
Person<String> p1 = new Persion<String>(); //instance화 할때 생성자에 데이터 타입 지정
Person<StringBuilder> p2 = new Person<StringBuilder>(); //instance화 할때 생성자에 데이터 타입 지정
'자바(Pattern&자료구조) > Generic' 카테고리의 다른 글
4. Generic (제너릭) 제한된 타입 파라미터 & 와일드 카드 타입 (0) | 2017.03.15 |
---|---|
3. Generic (제너릭) 메소드 - 사용예문1 (0) | 2017.03.15 |
2. Generic (제너릭) 멀티 타입 파라미터 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문2 (0) | 2017.03.15 |
2. Generic (제너릭) Type - 사용예문1 (0) | 2017.03.15 |
http://blog.naver.com/cestlavie_01/220957226360
디자인패턴을 공부하는 3단계 서적으로
첫째. JAVA 언어로 배우는 디자인패턴 입문, Gof 디자인패턴 , 헤드퍼스트 디자인패턴
둘째. 실전코드로 배우는 실용주의 디자인패턴
세째. 비 GOF디자인패턴 ( 멀티쓰레드패턴, 리소스패턴, 엔터프라이즈패턴, 서비스패턴, 맵리듀스패턴등등)