티스토리 뷰
Q. 왜 제네릭을 사용해야 할까?
java5부터 제네릭(Generic)타입이 새로 추가되었다.
1. 타입 체크
코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 한다. --> 에러를 사전에 방지
2. 타입 변환(casting)을 제거
비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프로그램 성능에 영향을 끼친다.
---- Generic Test ----
package chapter13; import java.util.ArrayList; import java.util.List; public class GenericTest { public void ex1() { //제너릭을 사용하지 않은 경우 저장된 데이터는 반드시 캐스팅해야 함 List data = new ArrayList(); data.add("홍길동"); data.add("일지매"); String name1 = (String)data.get(0); String name2 = (String)data.get(1); System.out.println(name1+", "+name2); data.add(10); data.add(3.5); Integer name3 = (Integer)data.get(2); Double name4 = (Double)data.get(3); System.out.println(name3+", "+name4); } public void ex2() { // 제너릭을 사용한 경우 List<String> data = new ArrayList<String>(); data.add("홍길동"); //data.add(10); //스트링타입이니까 안 돼 data.add("일지매"); String name1 = data.get(0); String name2 = data.get(1); System.out.println(name1+", "+name2); } public GenericTest() { ex1(); System.out.println("---- 제너릭을 사용한 경우 ----"); ex2(); } public static void main(String[] args){ new GenericTest(); } }
//Generic 타입을 사용자 정의 클래스형으로 지정 public void ex3() { List<Member> data = new ArrayList<Member>(); Member m1 = new Member("aaaa", "1111", "강동원"); Member m2 = new Member("bbbb", "2222", "박보검"); Member m3 = new Member("cccc", "3333", "송중기"); data.add(m1); data.add(m2); data.add(m3); //print for (int i = 0; i<data.size(); i++){ Member m = data.get(i); System.out.println(m); } //새로 만들어진 객체가 data에 존재하는지 체크 Member m4 = new Member("aaaa", "1111", "임꺽정"); if (data.contains(m4)){ //.contains() 존재 ㅇㅇ System.out.println("ID가 이미 존재함..."); } else { System.out.println("신규 회원입니다. "); } //for문으로 체크해보자 for(int i = 0; i<data.size(); i++){ Member m5 = data.get(i); if (m5.equals(m4) ){ System.out.println("ID가 이미 존재함...222"); break; } } }
※Ctrl + Shift + L : 단축키 보기
'배움과 복습' 카테고리의 다른 글
p.743 - 37행 (0) | 2017.09.11 |
---|---|
컬렉션 프레임워크 (0) | 2017.09.11 |
멀티 스레드(multi-Thread) (0) | 2017.09.08 |
중첩 클래스 (0) | 2017.09.04 |
java GUI - actionPerformed (0) | 2017.09.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Maven Project
- FileChannel
- NVL()
- IS RECORD
- MONTH_BETWEEN
- hierarchical query
- tables in htmll
- DI(의존성 주입)
- casring
- 테이블 데이터 복사
- 타입변환과 다형성
- z-dindex
- GROUP BY절
- CLASS
- 데이터 딕셔너리
- 로컬 클래스
- 상속
- SELECT절 명령어
- Interface
- DECODE()
- NVL2()
- 계층형 쿼리
- IN(var1 var2 var3)
- 중첩 클래스
- !(not)
- 멤버 클래스
- SQL Operator
- implements
- Generic Type
- 복수행 함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함