πToday...
β Today I Leaned
Enum
Enum(μ΄κ±°ν)μ μλ‘ μ°κ΄λ μμμ μ§ν©μ΄λ€. μμ = λ³νμ§ μλ κ°μ μλ―Ένκ³ , μ΄κ±°νμ μ΄λ¬ν μμλ€μ κ°νΈνκ² λ€λ£°λ μ¬μ©νλ€.
enum Names { JELLY, KEVIN, YOUMIN } //μ΄λ°μμΌλ‘ μ μΈνμ¬ μ¬μ©
public Class Main{...}
enumμ μ¬μ©νλ©΄ μμλͺ μ μ€λ³΅μ νΌνκ³ νμ μ λν μμ μ±μ 보μ₯νλ€. κ·Έλ¦¬κ³ switchλ¬Έμμλ μ¬μ©μ΄ κ°λ₯ν΄μ§λ€.
리ν΄νμ | λ©μλ(λ§€κ°λ³μ) | μ€λͺ |
String | name() | μ΄κ±° κ°μ²΄κ° κ°μ§κ³ μλ λ¬Έμμ΄μ 리ν΄νλ©°, 리ν΄λλ λ¬Έμμ΄μ μ΄κ±°νμ μ μ μν λ μ¬μ©ν μμ μ΄λ¦κ³Ό λμΌν©λλ€. |
int | ordinal() | μ΄κ±° κ°μ²΄μ μλ²(0λΆν° μμ)μ 리ν΄ν©λλ€. |
int | compareTo(λΉκ΅κ°) | μ£Όμ΄μ§ λ§€κ° κ°κ³Ό λΉκ΅ν΄μ μλ² μ°¨μ΄λ₯Ό 리ν΄ν©λλ€. |
μ΄κ±° νμ | valueOf(String name) | μ£Όμ΄μ§ λ¬Έμμ΄μ μ΄κ±° κ°μ²΄λ₯Ό 리ν΄ν©λλ€. |
μ΄κ±° λ°°μ΄ | values() | λͺ¨λ μ΄κ±° κ°μ²΄λ€μ λ°°μ΄λ‘ 리ν΄ν©λλ€. |
μ λ€λ¦(Generic)
#μ λ€λ¦ ν΄λμ€
genericμ νμ μ ꡬ체μ μΌλ‘ μ§μ νλ κ²μ΄ μλλΌ, μΆνμ μ§μ ν μμλλ‘ μΌλ°νν΄ λλκ²μ μλ―Ένλ€. μμ±ν ν΄λμ€ λλ λ©μλμ μ½λκ° νΉμ λ°μ΄ν° νμ μ μ½λ§€μ΄μ§ μκ² ν΄ λ κ²μ΄λ€.
//μ λ€λ¦ ν΄λμ€ μ μ
class Basket<T> {
private T item1; // O
static T item2; // X ==> ν΄λμ€ λ³μμλ νμ
λ§€κ°λ³μλ₯Ό μ¬μ©ν μμλ€.
}
//μ λ€λ¦ ν΄λμ€ μ¬μ©
Basket<String> basket1 = new Basket<String>("Hello");
Basket<String> basket1 = new Basket<>("Hello"); //new λ€μλ ꡬ체μ μΈ νμ
μλ΅κ°λ₯
//μ λ€λ¦ ν΄λμ€ λ€νμ± μ μ©
class Flower { ... }
class Rose extends Flower { ... }
class RosePasta { ... }
class Basket<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
}
class Main {
public static void main(String[] args) {
Basket<Flower> flowerBasket = new Basket<>();
flowerBasket.setItem(new Rose()); // λ€νμ± μ μ©
flowerBasket.setItem(new RosePasta()); // μλ¬
}
}
μ λ€λ¦ ν΄λμ€ μ¬μ©μμ κΈ°λ³Ένμ μ μ§μ ν μμλ€. μ¦ int, doubleλ±μ μμνμ μ μ§μ ν κ²½μ°, Integer, Double κ°μ λνΌν΄λμ€λ₯Ό μ¬μ©ν΄μΌνλ€.
[wrapperclass] http://www.tcpschool.com/java/java_api_wrapper
# νΉμ ν΄λμ€λ₯Ό μμ λ°μΌλ©΄μ λμμ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€ νμ μΌλ‘ μ ν
class Basket<T extends Flower & Plant> { // &λ₯Ό μ¬μ©νλ€.
private T item;
...
}
μ΄λ¬ν κ²½μ°μλ ν΄λμ€λ₯Ό μΈν°νμ΄μ€λ³΄λ€ μμ μμΉμμΌμΌνλ€.
# μ λ€λ¦ λ©μλ
generic methodλ ν΄λμ€ λ΄λΆμ νΉμ λ©μλλ§ μ λ€λ¦μΌλ‘ μ μΈν κ²μ΄λ€,
class Basket<T> { // 1 : μ¬κΈ°μμ μ μΈν νμ
λ§€κ° λ³μ Tμ
...
static <T> void add(T element) { // 2 : μ¬κΈ°μμ μ μΈν νμ
λ§€κ° λ³μ Tλ μλ‘ λ€λ₯΄λ€.
...
}
}
μ μμ μκ°μ΄ <T>λ‘ νμ μ΄ μ μλ Basket classμ addλ©μλλ μνλ²³ λ¬Έμλ₯Ό κ°μ΄ μ¬μ©νλ κ²μΌλΏ μλ‘ λ€λ₯Έ νμ μ λ§€κ°λ³μμ΄λ€. μ΄μ λ νμ μ΄ μ§μ λλ μμ μ΄ λ¬λΌμμΈλ°, ν΄λμ€λͺ μμ μ μΈν νμ λ§€κ°λ³μλ ν΄λμ€κ° μΈμ€ν΄μ€ν λ λ νμ μ΄ μ§μ λλ€. κ·Έλ¦¬κ³ μ λ€λ¦ λ©μλμ νμ μ§μ μ λ©μλκ° νΈμΆλ λ μ΄λ£¨μ΄ μ§λ€.
κ·Έλ¦¬κ³ μμμλ λ³Όμμλ―μ΄ ν΄λμ€ νμ λ§€κ°λ³μμ λ¬λ¦¬ staticλ©μλμμλ μ μΈνμ¬ μ¬μ©μ΄ κ°λ₯νλ€.
class Basket {
public <T> void getPrint(T item) {
System.out.println(item.equals("Kim coding")); // κ°λ₯
}
}
κ·Έλ¦¬κ³ μμ κ°μ΄ Objectν΄λμ€μ λ©μλλ₯Ό μ¬μ©μ΄ κ°λ₯νλ€. (λ€λ₯Έ ν΄λμ€μ λ©μλλ λΆκ°λ₯)
μμΌλ μΉ΄λ
<? extends T> //μνμ ν, Tμ Tλ₯Ό μμλ°λ νμν΄λμ€ νμ
λ§ νμ
νλΌλ―Έν°λ‘ λ°μμμλ€.
<? super T> //ννμ ν, Tμ Tμ μμ ν΄λμ€λ§ νμ
νλΌλ―Έν°λ‘ λ°λλ‘νλ€.
<?> // <? extends Object> μ κ°λ€, μ¦ λͺ¨λ ν΄λμ€νμ
μ νμ
νλΌλ―Έν°λ‘ λ°μμμλ€.
μμΈμ²λ¦¬
# μμΈ μ²λ¦¬μ κ³μΈ΅λ
μλ°μ μλ¬μ μμΈλ Throwable ν΄λμ€λ‘ λΆν° νμ₯λλ©°, λͺ¨λ μμΈμ μ΅κ³ μμ ν΄λμ€λ Exception ν΄λμ€μ΄λ€.
public class RuntimeExceptionTest {
public static void main(String[] args) {
try {
System.out.println("[μλ¬Έμ μνλ²³μ λλ¬Έμλ‘ μΆλ ₯νλ νλ‘κ·Έλ¨]");
printMyName(null); // (1) μμΈ λ°μ
printMyName("abc"); // μ΄ μ½λλ μ€νλμ§ μκ³ catch λ¬ΈμΌλ‘ μ΄λ
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException λ°μ!"); // (2) 첫 λ²μ§Έ catchλ¬Έ
}
catch (NullPointerException e) { // (3) λ λ²μ§Έ catchλ¬Έ
System.out.println("NullPointerException λ°μ!");
System.out.println("e.getMessage: " + e.getMessage()); // (4) μμΈ μ 보λ₯Ό μ»λ λ°©λ² - 1
System.out.println("e.toString: " + e.toString()); // (4) μμΈ μ 보λ₯Ό μ»λ λ°©λ² - 2
e.printStackTrace(); // (4) μμΈ μ 보λ₯Ό μ»λ λ°©λ² - 3
}
finally {
System.out.println("[νλ‘κ·Έλ¨ μ’
λ£]"); // (5) finallyλ¬Έ
}
}
static void printMyName(String str) {
String upperCaseAlphabet = str.toUpperCase();
System.out.println(upperCaseAlphabet);
}
}
// μΆλ ₯κ°
[μλ¬Έμ μνλ²³μ λλ¬Έμλ‘ μΆλ ₯νλ νλ‘κ·Έλ¨]
NullPointerException λ°μ!
e.getMessage: null
e.toString: java.lang.NullPointerException
[νλ‘κ·Έλ¨ μ’
λ£]
java.lang.NullPointerException
at RuntimeExceptionTest.printMyName(RuntimeExceptionTest.java:20)
at RuntimeExceptionTest.main(RuntimeExceptionTest.java:7)
- try : μμΈκ° λ°μν κ°λ₯μ±μ΄ μλ μ½λλ₯Ό μ½μ . μ μμ€ν => finallyλΈλ‘ μμΈλ°μ=>catchλΈλ‘
- catch : μμΈκ° λ°μν λ μ€νλλ μ½λ, μ¬λ¬μ’ λ₯μ μμΈλ₯Ό μ²λ¦¬κ°λ₯, νλ μ΄μ μ¬μ©κ°λ₯
- finally : μμΈ μ¬λΆμ κ΄κ³μμ΄ νμ μ€ν, νμ x
# μμΈ μ κ°
μμΈλ₯Ό νΈμΆν κ³³μΌλ‘ λ λκΈ°λ λ°©λ².
static void throwException() throws ClassNotFoundException, NullPointerException {
...
}