μΆμ²
ChatGPT
1. μ λ€λ¦μ μλ λ°©μκ³Ό νμ μκ±°(Type Erasure)
μ λ€λ¦μ μ»΄νμΌ μκ°μ νμ μ κ²μ¬νκ³ , λ°νμμλ νμ μ 보λ₯Ό μ μ§νμ§ μλλ€. μ¦, μ λ€λ¦ νμ μ 맀κ°λ³μλ μ»΄νμΌ μμ μλ§ μ ν¨νλ©°, νμ μκ±°(Type Erasure) κ³Όμ μμ μ»΄νμΌλ¬λ μ λ€λ¦ νμ μ 보λ₯Ό μ κ±°νκ³ λͺ¨λ μ λ€λ¦ νμ μ ν΄λΉ κ²½κ³(bound) λλ Objectλ‘ λ체νλ€.
μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ μ λ€λ¦ ν΄λμ€κ° μλ€κ³ κ°μ ν΄λ³Έλ€.
public class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
μ»΄νμΌ ν, μ λ€λ¦ νμ Tλ Objectλ‘ λ체λμ΄ λ€μκ³Ό κ°μ ννκ° λλ€.
public class Box {
private Object value;
public void setValue(Object value) {
this.value = value;
}
public Object getValue() {
return value;
}
}
νμ μκ±° κ³Όμ μμ λͺ¨λ μ λ€λ¦ νμ μ λ³΄κ° μ κ±°λμ΄, κ²°κ΅ μ»΄νμΌλ λ°μ΄νΈμ½λμλ μμ νμ κ³Ό κ΄λ ¨λ μ λ€λ¦ μ λ³΄κ° λ¨μμμ§ μκ² λλ€.
2. μμ νμ (Primitive Type)κ³Ό μ°Έμ‘° νμ (Reference Type)μ μ°¨μ΄
μλ°μλ λ κ°μ§ μ£Όμ λ°μ΄ν° νμ μ΄ μλ€.
μμ νμ (Primitive Type)
int, char, boolean, byte, short, long, float, double λ±.
- μμ νμ μ κΈ°λ³Έμ μΌλ‘ μ€ν λ©λͺ¨λ¦¬μ μ μ₯λλ©°, κ³ μ λ ν¬κΈ°λ₯Ό κ°μ§κ³ μλ€. μλ₯Ό λ€μ΄, intλ 4λ°μ΄νΈ ν¬κΈ°μ΄λ€.
- μμ νμ μ μ°Έμ‘° νμ κ³Ό λ¬λ¦¬ λ©λͺ¨λ¦¬μ μ§μ κ°μ μ μ₯νλ€.
μ°Έμ‘° νμ (Reference Type)
λͺ¨λ ν΄λμ€, μΈν°νμ΄μ€, λ°°μ΄ λ±μ΄ μ΄μ ν΄λΉνλ€.
- μ°Έμ‘° νμ μ κ°μ²΄μ μ°Έμ‘°(λ©λͺ¨λ¦¬ μ£Όμ)λ₯Ό μ μ₯νλ©°, μ€μ λ°μ΄ν°λ ν λ©λͺ¨λ¦¬μ μ μ₯λλ€.
- μ°Έμ‘° νμ μ nullμ κ°μ§ μ μκ³ , κ°μ²΄ μμ± μ λ©λͺ¨λ¦¬ ν λΉμ ν΅ν΄ ν λ©λͺ¨λ¦¬ μμ μ£Όμλ₯Ό μ°Έμ‘°νλ€.
3. μ λ€λ¦μμ μμ νμ μ μ¬μ©ν μ μλ μ΄μ
νμ μκ±°μ λ©λͺ¨λ¦¬ λͺ¨λΈμ μ°¨μ΄
μμ νμ μ λ©λͺ¨λ¦¬μμ μ§μ κ°μ μ μ₯νλ λ°λ©΄, μ λ€λ¦μ κΈ°λ³Έμ μΌλ‘ Objectμ κ°μ μ°Έμ‘° νμ μ κΈ°λνλ€. μ»΄νμΌλ¬λ μ λ€λ¦ νμ μ μ°Έμ‘° νμ μΌλ‘ μ·¨κΈνμ¬ Objectλ‘ λ³ννμλ§, μμ νμ μ μ΄μ νΈνλμ§ μλλ€. μμ νμ μ μ λ€λ¦μΌλ‘ μ¬μ©ν μ μλ€λ©΄ νμ λ³ν λ¬Έμ κ° λ°μν μ μλ€.
μμ ꡬ쑰μ μ°¨μ΄
λͺ¨λ μ°Έμ‘° νμ μ Objectλ₯Ό μμνμ§λ§, μμ νμ μ κ·Έλ μ§ μλ€. μ λ€λ¦μ νμ κ²½κ³λ₯Ό Objectλ‘ μ€μ νλ κ²½μ°κ° λ§μλ°, μμ νμ μ μ΄λ₯Ό μμνμ§ μμΌλ―λ‘ μ λ€λ¦ νμ μΌλ‘ μ¬μ©ν μ μλ€.
μλ λ°μ±κ³Ό μΈλ°μ±μ μ±λ₯ λ¬Έμ
μ λ€λ¦μμ μμ νμ μ μ§μ μ¬μ©ν μ μλ€ λ³΄λ, int κ°μ μμ νμ μ μ¬μ©ν λλ§λ€ μ»΄νμΌλ μ΄λ₯Ό Integerλ‘ μλ λ³ννλ λ°μ±(Boxing)μ μνν΄μΌ νκ³ , λ°λλ‘ μΈλ°μ±(Unboxing)λ νμνλ€. μ΄ κ³Όμ μ μ±λ₯μ μν₯μ λ―ΈμΉ μ μμΌλ©°, λͺ μμ , λλ μμμ νμ μΊμ€ν κ³Ό κ΄λ ¨λ μμΈκ° λ°μν μ μλ€.
4. μ λ€λ¦κ³Ό λνΌ ν΄λμ€μ μ¬μ©
λμ , μ λ€λ¦μ λνΌ ν΄λμ€(μ: Integer, Double, Character)λ₯Ό μ¬μ©νμ¬ μμ νμ μ μ²λ¦¬ν μ μλ€. μλ₯Ό λ€μ΄, List<int>λ μ¬μ©ν μ μμ§λ§, List<Integer>λ κ°λ₯νλ€.
μμ
import java.util.ArrayList;
import java.util.List;
public class GenericExample {
public static void main(String[] args) {
// μμ νμ
(int)μ μ¬μ©ν μ μκΈ° λλ¬Έμ, λνΌ ν΄λμ€ Integerλ₯Ό μ¬μ©ν©λλ€.
List<Integer> numbers = new ArrayList<>();
numbers.add(1); // μ€ν λ°μ±: int -> Integer
numbers.add(2);
numbers.add(3);
int sum = 0;
for (Integer number : numbers) {
sum += number; // μ€ν μΈλ°μ±: Integer -> int
}
System.out.println("Sum: " + sum); // μΆλ ₯: Sum: 6
}
}
5. κ²°λ‘
- νμ μκ±°λ‘ μΈν΄ μ λ€λ¦μμλ μ°Έμ‘° νμ λ§ μ¬μ©ν μ μμΌλ©°, μμ νμ μ μ§μ μ¬μ©ν μ μλ€.
- μμ νμ κ³Ό μ λ€λ¦μ λ©λͺ¨λ¦¬ λͺ¨λΈκ³Ό μμ ꡬ쑰μ μ°¨μ΄λ‘ μΈν΄ μμ νμ μ μ λ€λ¦μ λ§μ§ μλ€.
- λμ λνΌ ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ λ€λ¦μμ μμ νμ μ μ²λ¦¬νλ©°, μλ λ°μ±κ³Ό μΈλ°μ±μΌλ‘ λ³νλλ€.
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μ λ€λ¦ (1) | 2024.08.27 |
---|---|
[Java] λ³μ± Variance (0) | 2024.08.27 |
[Java] λ°μ±(Boxing), μΈλ°μ±(Unboxing)μΌλ‘ μΈν΄ λ°μν μ μλ μ±λ₯ μ΄μ (0) | 2024.08.27 |
[Java] μ λ€λ¦μ νμ μκ±° Type Erasure (0) | 2024.08.27 |
[Java][JVM] JVM μ»΄νμΌλ¬κ° switch λ¬Έμ μ μ©νλ μ΅μ ν κΈ°λ² (0) | 2024.08.21 |