λ°μν
Generic
public class Generic<T> { ... }
Generic<String> stringGeneric = new Generic<>();
- Generic < T > μ ν΄λμ€μ²λΌ, μ λ€λ¦μ μ¬μ©ν ν΄λμ€λ₯Ό μ λ€λ¦ ν΄λμ€λΌκ³ ν¨
- μ λ€λ¦μμ <> μ¬μ΄μ λ€μ΄κ°λ λ³μλͺ Tλ νμ λ³μλΌκ³ ν¨
- Generic ν΄λμ€λ₯Ό μμ νμ μ΄λΌκ³ ν¨
μ ν
- κ°μ²΄μ static λ©€λ²μ μ¬μ©ν μ μμ
- νμ λ³μλ μΈμ€ν΄μ€ λ³μλ‘ κ°μ£Όλκ³ , λͺ¨λ κ°μ²΄μ λμΌνκ² λμν΄μΌνλ static νλ νΉμ±μ μ¬μ©ν μ μμ
- μ λ€λ¦ λ°°μ΄μ μμ±ν μ μμ
λ¬Έλ²
- λ€μμ νμ λ³μλ₯Ό μ¬μ©ν μ μμ
public class Generics<T, U, E> {
public E multiTypeMethod(T t, U u) { ... }
}
Generic<Long, Integer, String> instance = new Generic(); istance.multiTypeMethod(longVal, intVal);`
- λ€νμ± μ¦ μμκ³Ό νμ
μ κ΄κ³λ κ·Έλλ‘ μ μ©λ¨
- λνμ μΌλ‘ λΆλͺ¨ ν΄λμ€λ‘ μ λ€λ¦ νμ λ³μλ₯Ό μ§μ νκ³ , κ·Έ μμ μμ ν΄λμ€λ₯Ό λκΈ°λ κ²μ μ λμν¨
- μμΌλ μΉ΄λλ₯Ό ν΅ν΄ μ λ€λ¦μ μ νμ ꡬ체μ μΌλ‘ μ ν μ μμ
public class ParkingLog { ... }
ParkingLog bmwParkingLog = new ParkingLog();
ParkingLog iphoneParkingLog = new ParkingLog(); // error!
- <? extends T> : Tμ κ·Έ μμλ€λ§ μ¬μ© κ°λ₯
- <? super T> : Tμ κ·Έ μ‘°μλ€λ§ κ°λ₯
- <?> : μ ν μμ
πβοΈ μ΄λ κ² μ ννλ μ΄μ ?
λ€νμ± λλ¬Έ!
- λ©μλλ₯Ό μ€μ½νλ‘ μ λ€λ¦μ λ³λλ‘ μ μΈ κ°λ₯
// λλ
static <T> void sort(List<T> list, Comparator<? super T> c) { ... }
- μ΄λ κ² λ°ν νμ μμ <> μ λ€λ¦μ μ¬μ©ν κ²½μ°, ν΄λΉ λ©μλμλ§ μ μ©λλ μ λ€λ¦ νμ λ³μλ₯Ό μ μΈ κ°λ₯
- νμ λ³μλ₯Ό ν΄λμ€ λ΄λΆμ μΈμ€ν΄μ€ λ³μ μ·¨κΈνκΈ° λλ¬Έμ μ λ€λ¦ ν΄λμ€μ νμ λ³μλ₯Ό static λ©μλμμλ μ¬μ©ν μ μμμ§λ§, μ λ€λ¦ λ©μλμ μ λ€λ¦ νμ λ³μλ ν΄λΉ λ©μλμμλ§ μ μ©λκΈ° λλ¬Έμ λ©μλ νλλ₯Ό κΈ°μ€μΌλ‘ μ μΈνκ³ μ¬μ© κ°λ₯
- κ°μ μ΄λ¦μ λ³μλ₯Ό μ¬μ©νλ€κ³ ν΄λ μ λ€λ¦ λ©μλμ νμ λ³μλ μ λ€λ¦ ν΄λμ€μ νμ λ³μμ λ€λ¦
public class Generic<T, U, E> {
// Genenric<T, U, E> μ Tμ μλμ Tλ μ΄λ¦λ§ κ°μ λΏ λ€λ₯Έ λ³μ
static <T> void sort(List<T> list, Comparator<? super T> c) { ... }
}
728x90
λ°μν
'λ΄μΌλ°°μμΊ ν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA: static μΆκ° μ 리 (0) | 2023.10.29 |
---|---|
JAVA 5μ£Όμ°¨: μ°λ λ (2) | 2023.10.23 |
JAVA 4μ£Όμ°¨: μμΈμ²λ¦¬ (1) | 2023.10.19 |
JAVA 3μ£Όμ°¨: ν΄λμ€, μμ, μΈν°νμ΄μ€ (1) | 2023.10.18 |
JAVA 2μ£Όμ°¨: μ°μ°μ, 쑰건문, λ°λ³΅λ¬Έ, λ°°μ΄, 컬λ μ (0) | 2023.10.17 |