01 지네릭스 (Generics)

import java.util.ArrayList;

public Class GenericTest{
	public static void main(String[] args) {
    	ArrayList list = new ArrayList();
        list.add(10);
        list.add(20);
        list.add("30"); // String 추가
        
        Integer i = (Integer)list.get(2); // 컴파일은 된다. 
        // 하지만 실행시 형변환 에러(ClassCastException)에러 발생한다. 프로그램이 죽음
        
        System.out.println(list);
        }
 }

지네릭스 

타입체크를 해주는 기능

import java.util.ArrayList;

public Class GenericTest{
	public static void main(String[] args) {
    	//ArrayList list = new ArrayList(); //JDK1.5이전. 지네릭스 도입이전에는 이렇게 썼지만 아래와 같이 지네릭스 표시해줘야한다.
    	ArrayList<Integer> list = new ArrayList<Integer>(); //<Integer> 대신 <Object>로 쓰면 여러종류의 객체를 저장할 수 있다.
        list.add(10);
        list.add(20);
        list.add("30"); // 지네릭스 덕분에 타입 체크가 강화됨
        
      //Integer i = (Integer)list.get(2); 
        Integer i = list.get(2); // 형변환 생략 가능하다.
        
       
        System.out.println(list);
        }
 }

지네릭스의 장점

1. 타입 안정성을 제공한다.

2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다.

  - ClassCastExcpetion 형변환에러를 줄일수 있다.


※참고 NullPointerException 을 막을 수 있는 코딩방법

//문자열일 경우
String str = null; // 좋은 코드가 아니다.
str.length(); //NullPointerException 발생한다. 


String str = ""; // 좋은 코드다.
str.length(); // 0출력, NullPointerExcetion 발생하지 않는다.


//배열일 경우
Object[] objArr = null; //NullPointerExcetipn 발생할 수 있다.

Object[] objArr = new Object[0]; //NullPointerExcetipn 발생하지 않는다.
Object[] objArr = {}; //NullPointerExcetipn 발생하지 않는다.

'자바 > 12. 지네릭스, 열거형, 에너테이션' 카테고리의 다른 글

03 타입 변수에 대입하기  (0) 2021.06.22
02 타입 변수  (0) 2021.06.22

댓글()
구독