๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€/Java

[16์ผ์ฐจ] ์ œ๋„ค๋ฆญ(Generic), ํ–ฅ์ƒ๋œ for๋ฌธ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ(Exception handeling)

Ex69 ~ Ex72

 

์ œ๋„ค๋ฆญ(Generic)

- ๋‹ค๋ฃฐ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ๋ช…ํ•ด์‹œ์คŒ์œผ๋กœ์จ ๋ฒˆ๊ฑฐ๋กœ์šด ํ˜•๋ณ€ํ™˜์„ ์ค„์—ฌ์ค€๋‹ค.

 

์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์˜ ์„ ์–ธ

 

class Box<T> { //์ œ๋„ค๋ฆญ ํƒ€์ž… T๋ฅผ ์„ ์–ธ
	T item;
    
    void setItem(T item) { this.item = item; }
    T getItem() { return item; }
}

- Box<T>์—์„œ T๋ฅผ ํƒ€์ž… ๋ณ€์ˆ˜(type variable)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

์˜ˆ์‹œ

๋”๋ณด๊ธฐ

์ œ๋„ค๋ฆญ์€ ํ˜•๋ณ€ํ™˜ ์•ˆํ•ด๋„ ๋จ

		WrapperObject n2 = new WrapperObject(20);
		
		System.out.println(n2.getData());
		System.out.println((int)n2.getData() * 2);
		System.out.println(n2.toString());
		System.out.println();
		
		Wrapper<Integer> n3 = new Wrapper<Integer>(30);
		
		System.out.println(n3.getData());
		System.out.println(n3.getData() * 2);
		System.out.println(n3.toString());
		System.out.println();
        
        
        
        WrapperObject s2 = new WrapperObject("์•„๋ฌด๊ฐœ");
		
		System.out.println(s2.getData());
		System.out.println(((String)s2.getData()).length()); //ํ˜•๋ณ€ํ™˜ํ•˜๊ณ  ๊ด„ํ˜ธ๋กœ ํ•œ๋ฒˆ ๋” ๊ฐ์‹ธ์•ผ๋จ
		System.out.println(s2.toString());
		System.out.println();
		
		Wrapper<String> s3 = new Wrapper<String>("์ดํด๋ฆฝ์Šค");
		System.out.println(s3.getData());
		System.out.println(s3.getData().length());
		System.out.println(s3.toString());
		System.out.println();

 

class WrapperObject {
	
	private Object data;
	
	public WrapperObject(Object data) {
		this.setData(data);
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	@Override
	public String toString() {
		return "data=" + data;
	}
	
}



class Wrapper<T> {
	
	private T data;
	
	public Wrapper(T data) {
		this.setData(data);
	}

	public T getData() {
		return data;
	}

	public void setData(T data) {
		this.data = data;
	}
	
	@Override
	public String toString() {
		return "data=" + data;
	}
	
}

ํ–ฅ์ƒ๋œ for๋ฌธ, Enhanced for statement
- foreach๋ฌธ, for in๋ฌธ
- ์ง‘ํ•ฉ์„ ๊ฐ€์ง€๊ณ  ๋ฃจํ”„๋ฅผ ๋Œ๋ฆด๋•Œ ์‚ฌ์šฉ

		String[] list = { "๊ฐ•์•„์ง€", "๊ณ ์–‘์ด", "๋ณ‘์•„๋ฆฌ", "์˜ค๋ณ‘์ด", "์†ก์•„์ง€" };
		
		for (int i=0; i<list.length; i++) {
			System.out.print(list[i] + "\t");
		}
		System.out.println();
		
		for (int i=0; i<10; i++) {
			System.out.print(i + "\t");
		}
		System.out.println();
		
		
		//๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” for๋ฌธ
		//- ๋ฌด์กฐ๊ฑด ์ฒซ๋ฒˆ์จฐ๋ฐฉ~๋งˆ์ง€๋ง‰๋ฐฉ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ชจ๋‘ ๋‹ค ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ ๋ง๊ณ ๋Š” ๋ชปํ•จ
		for (String name : list) {
			System.out.printf(name + "\t");
		}
		System.out.println();

 


์˜ˆ์™ธ์ฒ˜๋ฆฌ (Exception Handling)

try-catch๋ฌธ

 

์˜ˆ์™ธ ๋ฏธ๋ฃจ๊ธฐ
- throws Exception
- ์˜ˆ์™ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฝ”๋“œ์—์„œ ์ง์ ‘ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ , ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๊ณณ์— ๋– ๋„˜๊ธฐ๊ฒ ๋‹ค. 

 

์—ฌ๋Ÿฌ๊ฐœ์˜ ์—๋Ÿฌ ํ•˜๋‚˜๋กœ ๋ฌถ์„์ˆ˜์žˆ์Œ. ์—๋Ÿฌ ์ „๊นŒ์ง€ ์ถœ๋ ฅ

		try {
			
			System.out.println(111);
			
			int num = 0;
			System.out.println(100 / num); // throw new ArithmeticException() ์•ผ๊ตฌ๊ณต
			
			System.out.println(222);
			
			int[] nums = { 10, 20, 30 };
			System.out.println(nums[0]); //throw new ArrayIndexOutOfBoundException()
			
			System.out.println(333);
			
			Calendar now = null;
			System.out.println(now.get(Calendar.HOUR_OF_DAY)); // throw new NullPointException()
			
			System.out.println(444);
			
			
		} catch (ArithmeticException e) {
			
			System.out.println("0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ");
			
		} catch (ArrayIndexOutOfBoundsException e) {
			
			System.out.println("๋ฐฉ๋ฒˆํ˜ธ ํ‹€๋ฆผ");
			
		} catch (NullPointerException e) {
			
			System.out.println("๋„์ฐธ์กฐ");
			
		} catch (Exception e) { //๋‚˜๋จธ์ง€ ๋ชจ๋“  ์˜ˆ์™ธ(catch์ ˆ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์จ์•ผ๋จ)
			
			System.out.println("์˜ˆ์™ธ ์ฒ˜๋ฆฌ");
			
		}