-
JAVA μλ° μ λ€λ¦ (Generic)JAVA 2020. 8. 11. 22:25
π― μλ° μ λ€λ¦μ μμλ³Έλ€
μ λ€λ¦ (Generic)
public class Ex10_1 { public static void main(String[] args) { Object [] arr = {"νκΈΈλ", "μ΄μμ ", "μ κ΄μ"}; for(Object obj : arr) { String name = (String)obj; System.out.println("μ΄λ¦: "+name); } } }
μ΅μμν΄λμ€ objectλ‘ λ€μν νμνμ μ λ΄μ μ μμ§λ§ μμν΄λμ€ μ€λΈμ νΈλ‘λ μμμ΄ κ°μ§ λ©μλμ μ κ·Όν μ μλ€. κ·Έλμ μλ§μ νμ μ λ°μΌλ €λ©΄ λ§€λ² νλ³νμ΄ νμνλ€. μ΄λ¬ν λΆνΈν μ μ κ°μ ν λ°©λ²μ΄ μ λ€λ¦μ΄λ€.
public class ν΄λμ€λͺ <GenericType>{} ν΄λμ€λͺ <GenericType> μ°Έμ‘°λ³μ = new ν΄λμ€λͺ <>();
μ λ€λ¦μ κ°μ²΄μμ±μ ν λ μ¬μ©νμ μ μ§μ νλ€. ν΄λμ€μ μΈν°νμ΄μ€μ μ¬μ©ν μ μμΌλ©° μ»΄νμΌμ νμ μ΄ μ ν΄μ§κΈ°λλ¬Έμ νμ μΊμ€ν μ΄ νμμκ³ μμ ν μ½λμμ±μ΄ κ°λ₯νλ€.
ν΄λμ€μ μΈν°νμ΄μ€ μ΄λ¦ λ€μ <>λ₯Ό μ¬μ©ν΄ νμ νλΌλ―Έν°λ₯Ό μ μΈν΄ μ¬μ©νλ€.
class Box{ Object obj; public void setValue(Object obj) { this.obj = obj; } public Object getValue() { return obj; } } public class GenericTest { public static void main(String[] args) { Box b = new Box(); b.setValue("Hello"); String str = (String)b.getValue(); System.out.println(str); Box b2 = new Box(); b2.setValue(new Date()); Date d = (Date)b2.getValue(); System.out.println(d); } }
Box ν΄λμ€λ₯Ό 보면 μ΅μμ Object ν΄λμ€νμ μΌλ‘ λ³μλ₯Ό μ¬μ©νκ³ μλ€. Object νμ μ μ¬μ©νλ©΄ λ€μν νμν΄λμ€ νμ μ μ μ₯ν μ μμ§λ§ μνλ νΉμ νμ μ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ €λ©΄ νλ³νμ΄ νμνλ€.
import java.util.ArrayList; import java.util.Date; //Object λμ μ t(type) μλ―Έλ‘μ μ°Έμ‘°ν νμ λ§ μ§μ κ°λ₯ // tλ λ°μ€ κ°μ²΄λ₯Ό μμ±ν λΌ κ΅¬μ²΄μ μΈ νμ μΌλ‘ λ³κ²½κ°λ₯ class Box<T>{ T obj; public void setValue(T obj) { this.obj = obj; } public T getValue() { return obj; } } public class GenericTest2 { public static void main(String[] args) { //μ λ€λ¦μ€ νμ (generics type) Box<String> b = new Box<String>(); b.setValue("Hello"); String x = b.getValue(); System.out.println(x); Box<Date> b2 = new Box<>(); b2.setValue(new Date()); Date d = b2.getValue(); System.out.println(d); Box<Integer> b3 = new Box<>(); b3.setValue(100); int xxx = b3.getValue(); System.out.println(xxx); } }
μ λ€λ¦ λ°©λ²μ μ¬μ©νλ©΄ κ°μ²΄μμ±ν λ λ°μ΄ν°λ€μ μ€νΈλ§ νμ μΌλ‘ κ²°μ ν μ μλ€.
μ¬μ©κ°λ₯ν νμ μ ν
class Pet{} class Cat extends Pet{} class Dog extends Pet{} class Box2<T extends Pet>{ T obj; public void setValue(T obj) { this.obj=obj; }public T getValue() { return obj; } } public class Ex10_3 { public static void main(String[] args) { Box2<Pet> b = new Box2<Pet>(); Box2<Cat> b2 = new Box2<Cat>(); Box2<Dog> b3 = new Box2<Dog>(); //Box2<Object> b4 = new Box2<>(); } }
νΉμ ν΄λμ€λ₯Ό μμνλ μ λ€λ§ νΉμ νμ μΌλ‘ λ°κ² λ€κ³ νλΌλ―Έν° νμ μ μ νν μ μλ€. μμκ°μ΄ extends ν€μλλ₯Ό μ¬μ©νλ€.
μ λλ¦ λ©μλ
class Vehicle{} class Truck extends Vehicle{} class Car extends Vehicle{} public class Ex10_4 { public static <p> void method(P p) {} public static <P p> method2(P p){ return p; } public static void main(String[] args) { method(new Vehicle()); method(new Truck()); method(new Car()); Vehicle v = method2(new Vehicle()); Truck t = method2(new Truck()); Car c = method2(new Car()); } }
λ©μλμ 리ν΄νμ μμ νμ νλΌλ―Έν°λ₯Ό μ§μ νκ³ λ©μλμ 리ν΄νμ μ΄λ νλΌλ―Έν°λ‘ μ¬μ©ν μ μλ€.
π NEXT : μλ° μ»¬λ μ 곡λΆνκΈ°
λ°μν'JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA μλ° Listκ³μ΄ ArrayList (0) 2020.08.13 JAVA μλ° μ»¬λ μ Setκ³μ΄ HashSet (0) 2020.08.12 JAVA μλ° μμΈμ²λ¦¬, throws, μ¬μ©μμ μ μμΈν΄λμ€ (2) 2020.08.10 JAVA μλ° μ€μ²©ν΄λμ€, comparator μΈν°νμ΄μ€ (2) 2020.08.09 JAVA μλ° μΈν°νμ΄μ€, λ컀νλ§ (0) 2020.08.08