generic

Generic

μ œλ„€λ¦­ (Generic)

일반 λ©”μ„œλ“œ --> Object(λ‹€ν˜•μ  λ³€μˆ˜)  --> μ œλ„€λ¦­ (Object 단점 극볡)
  • 같은 ν΄λž˜μŠ€μ—μ„œ λ‹€λ£¨λŠ” 객체의 νƒ€μž…μ΄ λ‹¬λΌμ„œ νƒ€μž…λ³„λ‘œ λ§Œλ“€μ–΄μ•Ό ν•  λ©”μ„œλ“œ 및 좜λ ₯이 λ¬΄ν•œμ •μœΌλ‘œ λŠ˜μ–΄λ‚˜κ²Œ λœλ‹€

  • λ‹€μ–‘ν•œ 객체 μ €μž₯ν•  수 μžˆλ„λ‘ λ‹€ν˜•μ„±μ˜ λ‹€ν˜•μ  λ³€μˆ˜ νŠΉμ§•μ„ μ΄μš©ν•˜μ—¬ 값을 μ €μž₯ν•˜λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό Object νƒ€μž…μœΌλ‘œ μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•œλ‹€. 근데 Objectλ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 μ˜λ„μ™€ λ‹€λ₯Έ νƒ€μž…μ˜ 값을 μ €μž₯ν•˜λŠ” 것이 μžˆμ„ 수 μžˆλ‹€

  • μ΄λŸ¬ν•œ 단점을 κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄μ„œ μ œλ„€λ¦­(Generic)을 μ‚¬μš©ν•˜μ—¬ μ§€μ •ν•œ ν•œκ°œμ˜ 클래슀둜 λ‹€μ–‘ν•œ νƒ€μž…μ˜ 객체λ₯Ό μ œν•œμ μœΌλ‘œ λ‹€λ£° 수 μžˆλ„λ‘ ν•œλ‹€. μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ©΄ 각 νƒ€μž… λ³„λ‘œ λ”°λ‘œ 클래슀λ₯Ό μ •μ˜ν•œ νš¨κ³Όκ°€ μžˆλ‹€

μ œλ„€λ¦­ μ‚¬μš© 이유

  • 일반 λ©”μ„œλ“œλ‘œ 좜λ ₯

ObjectBox box1= new ObjectBox();
box1.set(new Member("홍길동",20));
Member m= (Member) box1.get(); // 값을 κΊΌλ‚Ό λ•Œ ν˜•λ³€ν™˜ν•΄μ•Ό ν•œλ‹€
System.out.println(m);
  • μ˜λ„μ™€ λ‹€λ₯Έ νƒ€μž…μ˜ 값을 μ €μž₯ν•˜λŠ” 것이 μžˆμ„ 수 μžˆλ‹€ (Object 단점)

MemberBox box1= new MemberBox();
box1.set(new Member("홍길동",20)); 
box1.set(new String("Hello"));
  • μœ„μ˜ member둜 λ©”μ„œλ“œλ₯Ό μ •μ˜ν–ˆκΈ° λ•Œλ¬Έμ— μ‚¬μš©μ„ ν•  수 μ—†μ§€λ§Œ, setμ—μ„œλŠ” object둜 μ •μ˜ν–ˆκΈ° λ•Œλ¬Έμ— String을 받을 수 있게 λ˜μ–΄μ„œ μ˜λ„ν•˜μ§€ μ•ŠκΈ° λ‹€λ₯Έ νƒ€μž…μ˜ 값을 μ €μž₯

μ œλ„€λ¦­ μ‚¬μš©

  1. λ‹€λ£¨λŠ” νƒ€μž…μ„ μ œν•œν•  수 μžˆλ‹€.

    • μ–΄λ–€ μ’…λ₯˜(νƒ€μž…,클래슀)의 객체λ₯Ό μ €μž₯ν•  것인지 μ§€μ •ν•  수 있으며, μ§€μ •λœ νƒ€μž… μ΄μ™ΈλŠ” μ €μž₯ν•  수 μ—†λ‹€.

    • 방법 : 클래슀λͺ…<νƒ€μž…λͺ…> :

ArrayList<Member> list = new ArrayList</*Member*/>();
list.add(new Member("홍길동", 20));
  • μ œλ„€λ¦­ λ¬Έλ²•μœΌλ‘œ 레퍼런슀 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” νƒ€μž…λͺ…을 μƒλž΅ν•  수 μ—†λ‹€

  • 레퍼런슀 선언에 μ œλ„€λ¦­ 정보가 μžˆλ‹€λ©΄ new μ—°μ‚°μžμ—μ„œλŠ” μƒλž΅ν•  수 μžˆλ‹€.

  1. μ œλ„€λ¦­μ„ μ§€μ •ν•˜λ©΄ 그와 κ΄€λ ¨λœ λ©”μ„œλ“œμ˜ νƒ€μž… 정보가 μžλ™μœΌλ‘œ 바뀐닀.

    • ν˜•λ³€ν™˜ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μ—†λ‹€. (νƒ€μž… λ³€ν™˜(casting)을 제거 ν•œλ‹€ )

  2. Tλ³€μˆ˜ = "νƒ€μž… νŒŒλΌλ―Έν„°" - 클래슀의 객체 νƒ€μž… (ex> element, obj, datatype) element = E, type = T, key = K, number = N, value = v , s= 2번째 U =3번째 v=4번째 νŒŒλΌλ―Έν„° ex) class Box

Last updated

Was this helpful?