티스토리 뷰

모바일소프트웨어/자바

Generic class

백수진 2021. 10. 19. 22:29

Generic[지네릭]은 하나의 타입에 의존하지 않고 모든 유형의 타입이 적용될 수 있는데 의미를 가진다. 

 

what?

데이터의 형식에 의존하지 않고 선언할 수 있으며 선언한 generic 클래스의 객체를 사용할때 타입을 사용자가 지정할 수 있는 class이다.

 

why?

generic의 장점

=> 클래스 내부에서 타입을 지정하는 것이 아니라 외부에서 사용자에 의해서 지정되어 사용되기 때문에 타입을 체크하고 변환할 필요가 없으며 비슷한 기능을 사용할때 재사용성이 높아질 수 있다는 장점을 갖는다.

 

how?

지네릭 메소드를 정의하는 규칙

- 메소드 선언시 <>로 구분된 매게변수 유형 섹션이 존재.

- 매개변수는 ,로 구분

 

지네릭 메소드를 사용

결과 :

integer : 2019

 

String : string 지네릭

 

 

 

1. generic class를 생성 => < > 안에 매게변수 유형을 적어줌.

- <T> : Type

- <E> : Element

등으로 적는다는 일반적인 규칙이 있지만 형태 선언은 사용자가 객체 생성때 해주기때문에 매개변수 유형에 대한 명을 적는다고 볼 때 Type, Ty, Ele, ELEM 등 유형의 이름은 상관없다.

=> 2개도 가능함.

 

2. generic class에서 사용할 메서드 들을 정의함.

일반적)

public void add(Integer t) 였다면 여기서(위의 코드)는 Integer 대신 유형을 받아온 <>안에 적어준 T를 넣어줌.

public void add(T t) => T를 정의한게 main이고 integerBox gereric class 객체에 의해 Integer 형태로 넘어옴. 

 

*generic과 상관없지만 중요한부분!)

add method를 static으로 정의하지 않았기에 this를 사용할 수 있으며 static정의시 new를 통해 객체를 생성해줘야함. 

=> 이전 포스팅 참고(static과 객체와의 관계)

 

*추가포스팅 [ 코딩하면서 느낀점!! 주의하기! ] 

1. generic역시 static과 사용이 불가능.

2. generic의 메소드 타입을 T혹은 받은 인자를 T 형태라고 했을 때 T가 무엇일지 정의되어있지 않기에 서로 연산을 할 수 없음.

3. T -> Double로 형변환이 가능. 하지만 어떤 변수를 T타입으로 형변환하는 코드에서는 에러가남.

이유 : T가 어떤 형태인지 모르기때문에 모든 형태에서 서로서로 형변환이 가능하지 않아서.

4. 타입을 사용할 때, int, double 등을 사용못함 => 변수의 형태를 나타내는 클래스 객체를 적어줘야함.

https://includestdio.tistory.com/1 의 참고

 

 

 

 

 

'모바일소프트웨어 > 자바' 카테고리의 다른 글

vector  (0) 2021.10.21
자바에서의 객체 비교  (0) 2021.10.16
자바 문자열 다루기  (0) 2021.10.11
Static변수와 객체생성의 관계  (0) 2021.10.01
java 변수  (0) 2021.09.28