๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ!
- ์ด๊ฑฐํ (Enum)
- ์ ๋ค๋ฆญ (Generic)
- ์์ธ์ฒ๋ฆฌ (Exception Handling)
โ๏ธ ์ด๊ฑฐํ(enum)
- ์์(final)๋ค์ ์งํฉ
- ์ฌ๋ฌ ์์๋ค์ ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์ ์ธํ๊ณ ๊ด๋ฆฌ
- ์์๋ช
์ ์ค๋ณต์ ํผํ๊ณ , ํ์
์ ๋ํ ์์ ์ฑ์ ๋ณด์ฅ
( ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ ๋ค๋ฅธ ์ฝ๋์ ๋ฐํด ํจ์ฌ ๋ ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋๋ฅผ ์์ฑ์ด ๊ฐ๋ฅํ๊ณ switch๋ฌธ์์๋ ์๋ ๊ฐ๋ฅ )
enum ์ด๊ฑฐํ์ด๋ฆ { ์์๋ช
1, ์์๋ช
2, ์์๋ช
3, ...}
( ์์๋ช ์ ๋๋ฌธ์๋ก! )
- ์์๋ค์ ์๋์ ์ผ๋ก ์ฒซ๋ฒ์งธ๋ถํฐ 0๋ถํฐ ์์ํ์ฌ 0, 1, 2 ... ์ ์๊ฐ์ด ํ ๋น
๐์ด๊ฑฐํ์ด๋ฆ.์์๋ช
์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
โ๏ธ ์ด๊ฑฐํ์์ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋
- name()
์ด๊ฑฐ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฌธ์์ด์ ๋ฆฌํด
(๋ฆฌํด๋๋ ๋ฌธ์์ด์ ์ด๊ฑฐํ์ ์ ์ ์ํ ๋ ์ฌ์ฉํ ์์ ์ด๋ฆ๊ณผ ๋์ผ) - ordinal()
์ด๊ฑฐ ๊ฐ์ฒด์ ์๋ฒ์ 0๋ถํฐ ์ ์ํ์ผ๋ก ๋ฆฌํด - compareTo(๋น๊ต๊ฐ)
์ฃผ์ด์ง ๋งค๊ฐ๊ฐ๊ณผ ๋น๊ตํด์ ์๋ฒ ์ฐจ์ด๋ฅผ ์ ์ํ์ผ๋ก ๋ฆฌํด - valueOf(String name)
์ฃผ์ด์ง ๋ฌธ์์ด์ ์ด๊ฑฐ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด (์ด๊ฑฐํ์ ๋ฆฌํด) - values()
๋ชจ๋ ์ด๊ฑฐ ๊ฐ์ฒด๋ค์ ๋ฐฐ์ด๋ก ๋ฆฌํด (์ด๊ฑฐ๋ฐฐ์ด ๋ฆฌํด)
โ๏ธ ์ ๋ค๋ฆญ (Generic)
- ํด๋์ค๋ฅผ ๋ง๋ค ๋ ๊ทธ ํด๋์ค์ ์ฝ๋๊ฐ ํน์ ๋ฐ์ดํฐ ํ์ ์ ์ฝ๋งค์ด์ง ์๋๋ก ํ์ ์ ์ง์ ํด๋์ง ์๊ณ ๋์ค์ ์ง์ ํ ์ ์๋๋ก ์ผ๋ฐํ ํด๋๋ ๊ฒ
โ ์ ๋ค๋ฆญ ํด๋์ค
- ์ ๋ค๋ฆญ์ด ์ฌ์ฉ๋ ํด๋์ค ( ํ์
์ง์ ํ๋ ๋ฐ ์ ํ์ด ์์ )
- ํด๋์ค ์ด๋ฆ ์์ < T > ์ด๋ฐ ์์ผ๋ก ํ์
๋งค๊ฐ๋ณ์ ์์ฑ โ ํด๋์ค ๋ด์์ T๋ฅผ ์์์ ํ์
์ผ๋ก ์ฌ์ฉ
- ํด๋์ค ๋ณ์ (static)์๋ ํ์
๋งค๊ฐ๋ณ์ ์ฌ์ฉ ๋ถ๊ฐ
( ํด๋์ค ๋ณ์๋ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณต์ ํ๋ ๊ณตํต ๋ณ์์ธ๋ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ํ์ ์ด ์ธ์คํด์ค ๋ณ๋ก ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์๋จ )
โ ์ ํ๋ ์ ๋ค๋ฆญ ํด๋์ค
class Basket<T extends Flower> {
...
}
- ์์ ๊ฐ์ด ์ฐ๋ฉด ์ ๋ค๋ฆญ์ T ํ์ ์ Flower ํด๋์ค์ ํ์ ํด๋์ค๋ง ์ง์ ํ๋๋ก ์ ํ ๊ฐ๋ฅ
- ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ extands๋ก ์ง์ ๊ฐ๋ฅ
- ํน์ ํด๋์ค(a)๋ฅผ ์์๋ฐ์ผ๋ฉฐ์ ๋์์ ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค(b)๋ง ํ์ ์ผ๋ก ์ง์ ํ๋ ค๋ฉด < extands a & b > ์ด๋ ๊ฒ & ์ด ๊ธฐํธ ์ฌ์ฉ (ํด๋์ค๋ฅผ ์ธํฐํ์ด์ค๋ณด๋ค ์์ ์์น์์ผ์ผํจ)
โ ์ ๋ค๋ฆญ ๋ฉ์๋
class Basket {
...
public <T> void add(T element) {
...
}
}
- ์ด ๋, ํด๋์ค๋ช
๋ค์ ์ ์ธํ๋ ์ ๋ค๋ฆญ ํด๋์ค์ T์ ์ ๋ค๋ฆญ ๋ฉ์๋์ T๋ ์๋ก ๋ค๋ฅธ ๊ฒ
โ ํด๋์ค๋ช ์์ ์ ์ธํ ํ์ ๋งค๊ฐ๋ณ์ T ๐ ํด๋์ค๊ฐ ์ธ์คํด์คํ๋ ๋ ํ์ ์ง์
โ ์ ๋ค๋ฆญ ๋ฉ์๋ T ๐ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ํ์ ์ง์ - static ๋ฉ์๋์๋ ์ ์ธํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
( but, ๋ฉ์๋ ์ ์ ์์ ์ ์ค์ ์ด๋ค ๊ฐ์ด ์ ๋ ฅ๋ ์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ length()์ ๊ฐ์ String ํด๋์ค์ ๋ฉ์๋๋ ํ์ฉ ๋ถ๊ฐํ๊ณ equals()์ ๊ฐ์ Object ํด๋์ค ๋ฉ์๋๋ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ)
[ ์ฐธ๊ณ ] https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html
โ ์์ผ๋์นด๋
- ์ด๋ ํ ํ์ ์ผ๋ก๋ ๋์ฒด๋ ์ ์๋ ํ์ ํ๋ผ๋ฏธํฐ
- ๊ธฐํธ ?
- ์ผ๋ฐ์ ์ผ๋ก extends์ super ํค์๋๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉ
<? extends T> //1๋ฒ
<? super T> //2๋ฒ
1๋ฒ( ์ํ์ ํ ) - T์ T ์์๋ฐ๋ ํ์ ํด๋์ค ํ์
๋ง ํ์
ํผ๋ผ๋ฏธํฐ๋ก ๋ฐ๋๋ก ์ง์
2๋ฒ( ํํ์ ํ ) - T์ T ์์ํด๋์ค ํ์
๋ง ํผ๋ผ๋ฏธํฐ๋ก ๋ฐ๋๋ก ์ง์
์์ ์๋ฌด๊ฒ๋ ์ฐ์ง ์๋ <?> == <? extends Object>
๐ ๋ชจ๋ ํด๋์ค ํ์
์ Object ํด๋์ค๋ฅผ ์์๋ฐ์ผ๋ฏ๋ก, ๋ชจ๋ ํด๋์ค ํ์
์ ํ์
ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ์ ์์
โ๏ธ ์์ธ ์ฒ๋ฆฌ (Exception Handling)
- ์๊ธฐ์น ์๊ฒ ๋ฐ์ํ๋ ์๋ฌ์ ๋์ ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด์ ํ๋ก๊ทธ๋จ์ ๋น์ ์์ ์ธ ์ข ๋ฃ๋ฅผ ๋ฐฉ์งํ๊ณ , ์ ์์ ์ธ ์คํ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ
โ ์ปดํ์ผ ์๋ฌ(Compile Time Error)
- ์ปดํ์ผํ ๋ ๋ฐ์ํ๋ ์๋ฌ ( ์ปดํ์ผ๋ฌ์ ์ํด ๊ฐ์ง )
- ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์ค๋ฅ๋ฅผ ๊ฐ์งํ์ฌ ๋นจ๊ฐ์ค๋ก ๋ฏธ๋ฆฌ ์๋ ค์ค
- ์ฃผ๋ก ๋ฌธ๋ฒ์์์ ๊ด๋ จํ ์๋ฌ
โ ๋ฐํ์ ์๋ฌ(Run Time Error)
- ๋ฐํ์ ์(ํ๋ก๊ทธ๋จ ์คํ ์) ๋ฐ์ํ๋ ์๋ฌ ( JVM์ ์ํด ๊ฐ์ง )
- ์ฃผ๋ก ๊ฐ๋ฐ์๊ฐ ์ปดํจํฐ๊ฐ ์ํํ ์ ์๋ ํน์ ํ ์์ ์ ์์ฒญํ ๋ ๋ฐ์
โ๏ธ ํ๋ก๊ทธ๋จ ์ค๋ฅ์ ์ข ๋ฅ
1. ์๋ฌ(error)
- ๋ณต๊ตฌํ๊ธฐ ์ด๋ ค์ด ์์ค์ ์ฌ๊ฐํ ์ค๋ฅ
Ex. ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ(OutOfMemoryError), ์คํ์ค๋ฒํ๋ก์ฐ(StackOverflowError) ๋ฑ
2. ์์ธ(exception)
- ์๋ชป๋ ์ฌ์ฉ ๋๋ ์ฝ๋ฉ์ผ๋ก ์ธํ ์๋์ ์ผ๋ก ๋ฏธ์ฝํ ์์ค์ ์ค๋ฅ
( ์ฝ๋๋ฅผ ์์ ํด ์์ต ๊ฐ๋ฅํ ์ค๋ฅ ) - ๋ชจ๋ ์์ธ์ ์ต๊ณ ์์ํด๋์ค๋ Exception ํด๋์ค
๐ ์์ธ์ ์ข ๋ฅ (Exception ํด๋์ค)
1. ์ผ๋ฐ ์์ธ ํด๋์ค(Exception)
- ๋ชจ๋ Exception ํด๋์ค์ ๊ทธ ํ์ ํด๋์ค๋ค
( RuntimeException ํด๋์ค์ ๊ทธ ํ์ ํด๋์ค๋ฅผ ์ ์ธ )
- checked ์์ธ๋ผ ๋ถ๋ฅด๊ธฐ๋ ํจ
(์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋ ์คํ ์ ์ ์์ธ ์ฒ๋ฆฌ ์ฝ๋ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๊ธฐ ๋๋ฌธ)
- ์ฃผ๋ก ์ฌ์ฉ์์ ํด๋์ค๋ช , ํ์ ๋ฑ์ ์ค์๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์โ
2. ์คํ ์์ธ ํด๋์ค(Runtime Exception)
- RuntimeException ํด๋์ค์ ๊ทธ ํ์ํด๋์ค๋ฅผ ์ง์นญ
- unchecked ์์ธ๋ผ ๋ถ๋ฅด๊ธฐ๋ ํจ
( ์ปดํ์ผ๋ฌ๊ฐ ์์ธ ์ฒ๋ฆฌ ์ฝ๋ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ์ง ์๋๋ค๋ ์๋ฏธ์์ )
- ์ฃผ๋ก ๊ฐ๋ฐ์์ ๋ฌธ๋ฒ์ ์ค์๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
โ try -catch ๋ฌธ
try {
// ์์ธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋๋ฅผ ์ฝ์
}
catch (ExceptionType1 e1) {
// ExceptionType1 ์ ํ์ ์์ธ ๋ฐ์ ์ ์คํํ ์ฝ๋
}
catch (ExceptionType2 e2) {
// ExceptionType2 ์ ํ์ ์์ธ ๋ฐ์ ์ ์คํํ ์ฝ๋
}
finally {
// finally ๋ธ๋ญ์ ์ต์
๋
// ์์ธ ๋ฐ์ ์ฌ๋ถ์ ์๊ด์์ด ํญ์ ์คํ
}
๊ตฌ์ฒด์ ์ธ ์์ธ ํด๋์ค(ํ์ํด๋์ค)๋ฅผ ์์ ๋ฃ์ด ๊ตฌ์ฒด์ ์ธ ๊ฒ๋ถํฐ ๋จผ์ ์คํ๋ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข์
โ ์์ธ ์ ๊ฐ
- ์์ธ๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ๋ค์ ์์ธ๋ฅผ ๋ ๋๊ธฐ๋ ๋ฐฉ๋ฒ
- throws ํค์๋ ์ฌ์ฉํ์ฌ ํด๋น ์์ธ๋ฅผ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ๋ค์ ๋ ๋๊น
- ์๋์ ์ผ๋ก ์์ธ๋ฅผ ๋ง๋ค๊ธฐ๋ ํจ
๋ฐํํ์
๋ฉ์๋๋ช
(๋งค๊ฐ๋ณ์, ...) throws ์์ธํด๋์ค1, ์์ธํด๋์ค2, ... {
...์๋ต...
}
- ํน์ ๋ฉ์๋์์ ๋ชจ๋ ์ข
๋ฅ์ ๋ฉ์๋๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ Exception ํด๋์ค๋ก ์ ๊ฐ โฌ๏ธ
( Exception ํด๋์ค๋ ๋ชจ๋ ์์ธ ํด๋์ค์ ์์ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ํ์ ํด๋์ค ํ์ ์ ์์ธ ํด๋์ค๋ค์ด ๋ชจ๋ ํฌํจ๋์ด ์ ๊ฐ ๊ฐ๋ฅ )
( ์์ธ์ฒ๋ฆฌ์ ์ฑ ์ - main ๋ฉ์๋๊ฐ ์ง ( throwException ๋ฉ์๋ X ) )
void ExampleMethod() throws Exception {
}
- main ๋ฉ์๋์์ ์์ธ ์ ๊ฐ ํ ๊ฒฝ์ฐ JVM์ด Exception์ ์ก์์ ์ฒ๋ฆฌํด์ค
public static void main(String[] args) throws Exception {
}
๐ ๋๋์
์ค๋์ ๋ฐฐ์ด ๋ด์ฉ๊ณผ ๊ฐ๋ ๋ค์ด ๋ง์ ๋ ๊ฒ์๋ฌผ๋ก ๋๋ ์ ์ ๋๋ค! ๋ค์ ๊ฒ์๋ฌผ์์ ์ปฌ๋ ์ ๊ด๋ จ ๋ด์ฉ๋ค์ ์ ์ด๋ณผ ์์ ใ ใ
( ๋ณธ ๊ฒ์๋ฌผ์ 2022/09/15์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
'โข CodeStates BootCamp > Section 1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [Section1] 17. Java ์ฌํ1 (0) | 2023.04.06 |
---|---|
๐ [Section1] 16. ์ปฌ๋ ์ (Collection) (0) | 2023.04.06 |
๐ [Section1] 14. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ4 (0) | 2023.04.06 |
๐ [Section1] 13. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ3 (0) | 2023.04.06 |
๐ [Section1] 12. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ2 (0) | 2023.04.06 |