enum μ΄κ±°νμ΄λ¦ { μμλͺ 1, μμλͺ 2, μμλͺ 3, ...}
( μμλͺ μ λλ¬Έμλ‘! )
μ΄κ±°νμ΄λ¦.μμλͺ
μΌλ‘ μ κ·Ό κ°λ₯name()
μ΄κ±° κ°μ²΄κ° κ°μ§κ³ μλ λ¬Έμμ΄μ 리ν΄
(리ν΄λλ λ¬Έμμ΄μ μ΄κ±°νμ
μ μ μν λ μ¬μ©ν μμ μ΄λ¦κ³Ό λμΌ)
ordinal()
μ΄κ±° κ°μ²΄μ μλ²μ 0λΆν° μ μνμΌλ‘ 리ν΄
compareTo(λΉκ΅κ°)
μ£Όμ΄μ§ 맀κ°κ°κ³Ό λΉκ΅ν΄μ μλ² μ°¨μ΄λ₯Ό μ μνμΌλ‘ 리ν΄
valueOf(String name)
μ£Όμ΄μ§ λ¬Έμμ΄μ μ΄κ±° κ°μ²΄λ₯Ό λ¦¬ν΄ (μ΄κ±°νμ
리ν΄)
values()
λͺ¨λ μ΄κ±° κ°μ²΄λ€μ λ°°μ΄λ‘ λ¦¬ν΄ (μ΄κ±°λ°°μ΄ 리ν΄)
μ λ€λ¦μ΄ μ¬μ©λ ν΄λμ€ ( νμ μ§μ νλ λ° μ νμ΄ μμ )
ν΄λμ€ μ΄λ¦ μμ < 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 T> //1λ² <? super T> //2λ²
1λ²( μνμ ν ) - Tμ T μμλ°λ νμ ν΄λμ€ νμ
λ§ νμ
νΌλΌλ―Έν°λ‘ λ°λλ‘ μ§μ
2λ²( ννμ ν ) - Tμ T μμν΄λμ€ νμ
λ§ νΌλΌλ―Έν°λ‘ λ°λλ‘ μ§μ
μμ μ무κ²λ μ°μ§ μλ <?>
== <? extends Object>
π λͺ¨λ ν΄λμ€ νμ
μ Object ν΄λμ€λ₯Ό μμλ°μΌλ―λ‘, λͺ¨λ ν΄λμ€ νμ
μ νμ
νλΌλ―Έν°λ‘ λ°μ μ μμ
π μμΈμ μ’ λ₯ (Exception ν΄λμ€)
- μΌλ° μμΈ ν΄λμ€(Exception)
- λͺ¨λ Exception ν΄λμ€μ κ·Έ νμ ν΄λμ€λ€
( RuntimeException ν΄λμ€μ κ·Έ νμ ν΄λμ€λ₯Ό μ μΈ )- checked μμΈλΌ λΆλ₯΄κΈ°λ ν¨
(μ»΄νμΌλ¬κ° μ½λ μ€ν μ μ μμΈ μ²λ¦¬ μ½λ μ¬λΆλ₯Ό κ²μ¬νκΈ° λλ¬Έ)- μ£Όλ‘ μ¬μ©μμ ν΄λμ€λͺ , νμ λ±μ μ€μλ‘ λ°μνλ κ²½μ°κ° λ§μ
β
- μ€ν μμΈ ν΄λμ€(Runtime Exception)
- RuntimeException ν΄λμ€μ κ·Έ νμν΄λμ€λ₯Ό μ§μΉ
- unchecked μμΈλΌ λΆλ₯΄κΈ°λ ν¨
( μ»΄νμΌλ¬κ° μμΈ μ²λ¦¬ μ½λ μ¬λΆλ₯Ό κ²μ¬νμ§ μλλ€λ μλ―Έμμ )- μ£Όλ‘ κ°λ°μμ λ¬Έλ²μ μ€μλ‘ λ°μνλ κ²½μ°κ° λ§μ
try { // μμΈκ° λ°μν κ°λ₯μ±μ΄ μλ μ½λλ₯Ό μ½μ } catch (ExceptionType1 e1) { // ExceptionType1 μ νμ μμΈ λ°μ μ μ€νν μ½λ } catch (ExceptionType2 e2) { // ExceptionType2 μ νμ μμΈ λ°μ μ μ€νν μ½λ } finally { // finally λΈλμ μ΅μ λ // μμΈ λ°μ μ¬λΆμ μκ΄μμ΄ νμ μ€ν }
ꡬ체μ μΈ μμΈ ν΄λμ€(νμν΄λμ€)λ₯Ό μμ λ£μ΄ ꡬ체μ μΈ κ²λΆν° λ¨Όμ μ€νλ μ μλλ‘ νλ κ²μ΄ μ’μ
μμΈλ₯Ό νΈμΆν κ³³μΌλ‘ λ€μ μμΈλ₯Ό λ λκΈ°λ λ°©λ²
throws ν€μλ μ¬μ©νμ¬ ν΄λΉ μμΈλ₯Ό λ©μλλ₯Ό νΈμΆν κ³³μΌλ‘ λ€μ λ λκΉ
μλμ μΌλ‘ μμΈλ₯Ό λ§λ€κΈ°λ ν¨
λ°ννμ λ©μλλͺ (맀κ°λ³μ, ...) throws μμΈν΄λμ€1, μμΈν΄λμ€2, ... { ...μλ΅... }
void ExampleMethod() throws Exception { }
public static void main(String[] args) throws Exception { }
μ€λμ λ°°μ΄ λ΄μ©κ³Ό κ°λ λ€μ΄ λ§μ λ κ²μλ¬Όλ‘ λλ μ μ λλ€! λ€μ κ²μλ¬Όμμ 컬λ μ κ΄λ ¨ λ΄μ©λ€μ μ μ΄λ³Ό μμ γ γ