JAVA : 제네릭(Generic)

soap·2025년 4월 10일

Java : 기초

목록 보기
8/11

제네릭

실행되는 곳레서 타입 강제 함 -> 해당 타입으로 재정의 -> 컴파일러 사전 체크 = 강제형변화 ㄴ불필요
기본 차입은 넣을 수 없다

import java.util.ArrayList;
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

public class GenericEx {

	public static void main(String[] args) {
		List list = new ArrayList();
		Order o = new Order();
		
		o.setNumber(12345);
		list.add(o);
		
		o.setNumber(12346);
		list.add(o);
		
		o.setNumber(12347);
		list.add(o);
		
		for(int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}

	}

}

@Getter
@Setter
@ToString
class Order{
	private int number = 0;
	private String date;
	private int price = 0;
}

같은 o를 3번이나 넣었음

public static void main(String[] args) {
		List list = new ArrayList();
		Order o = new Order();
		
		o.setNumber(12345);
		list.add(o);
		
        o = new Order(); //새로운 객체
		o.setNumber(12346);
		list.add(o);
		
        o = new Order(); //새로운객체
		o.setNumber(12347);
		list.add(o);
		
		for(int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i)); //list.get(i)은 object타입 (최상위)
		}

	}

for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).getNumber()); //Object.getNumer()인건데 부모가 자식클래스 메소드 사용?? 불가!! 그래서 오류가 남
		}
 
for (int i = 0; i < list.size(); i++) {
			//System.out.println(((Order)list.get(i)).getNumber()); 형변환해주기 => 불편해지잖아~~ 그래서 제네릭 쓰는 거임
		}
        
 
				

Object java.util.List.get(int index)

Returns the element at the specified position in this list.

The method getNumber() is undefined for the type Object

List<Order> list = new ArrayList<Order>();  //강제형변환을 하지 않아서 좋음   
 for (int i = 0; i < list.size(); i++) {
			//System.out.println(((Order)list.get(i)).getNumber());
			System.out.println(list.get(i).getNumber()); //강제 형변환 불필요
		}
		

Order java.util.List.get(int index)

profile
치열하게 살지는 않아도 후회되는 순간은 만들지 말자

0개의 댓글