Study/Java

제네릭 / 예외처리

kahaha 2022. 11. 10. 14:00

# 열거형 


* public static final int ~
* enum Season {SPRING, SUMMER, FALL, WINTER} // 순서대로 0,1,2,3
* name()//정의한 열거문자 리턴(배열에서사용) 
- ordinal()//순번출력
- compareTo
- valueOf(String name)//문자열의 열거 객체 리턴
- values()//모든 열거 배열로 리턴

 


# 제네릭

* <T>타입 매개변수 <-- 타입을 지정해주면 그때 결정됌
- public T item; <---이런식으로 쓸 수 있음
- Basket<String> stringBasket = new basket<>(item:"Apple");
- Basket<Integer> integerBasket = new Basket<>(item:369);

* Basket<T extends Flower> // 인스턴스화 할때 Flower 클래스 하위클래스만 지정하도록 or 인터페이스 구현한 클래스만 받도록 제한
- class Basket<T extends Flower & Plant> // 상속받으며 특정인터페이스를 구현한타입으로 지정제한

* 특정 메서드만 제네릭으로 선언도 가능
- public <T> void add(T element)
- 클래스 제네릭 <T>와 메서드제네릭<T>는 다르게 구분 // 동일명이더라도 다르게 구분

*와일드카드 
- <? extends 클래스명>(하위)혹은 <? super 클래스명>(상위)로 사용

- <T extends 클래스명>과 뭐가 다른지 모르겠음...

 

 


# 예외처리

* 모든 예외의 최고 상위클래스 Exception
- 일반 예외클래스 : 모든 Exception클래스들 // 런타임시 발생하는 RuntimeException클래스들 제외
- 실행 예외클래스 : 런타임시 발생하는 RuntimeException클래스들 // 형변환, 배열범위지정, 널포인터오류 등

* 사용법
try{
여기코드실행하고
}
catch (해당에러){
만약 해당에러가 발생하면 여기있는 코드를 실행
println(해당에러)로 확인 가능
}
finally{
에러가 발생 하던 안하던 여기있는 코드 무조건 실행
}

* 에러정보 얻는 방법 3가지
- e.getMessage();  // println과 함께사용
- e.toString() ;  //println과 함께사용
- e.printStackTrace();

* 예외전가 (throw)  : exception이 발생함에 대응할것을 강제함<-- 즉 메서드 내부가 아닌 호출하는 곳에서 try catch를 사용하게함
- void ExampleMethod() throws Exception{} // thow 형식
- 고의적으로 예외를 발생시켜 프로그램 비정상 종료를 방지할때도 사용