[UMC] 2μ£Όμ°¨πŸ’­ - μ œλ„€λ¦­μ΄λž€?

MadelineπŸ‘©πŸ»β€πŸ’»Β·2022λ…„ 9μ›” 23일
1

개발 지식

λͺ©λ‘ 보기
2/9

μ œλ„€λ¦­(generic)

μžλ°”μ—μ„œ μ œλ„€λ¦­(generic)μ΄λž€ 데이터 νƒ€μž…μ„ μΌλ°˜ν™”ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
λ­” 말이야?

데이터 ν˜•μ‹μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ , ν•˜λ‚˜μ˜ 값이 μ—¬λŸ¬ λ‹€λ₯Έ 데이터 νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλ„λ‘ ν•˜λŠ” 방법이라고 ν•œλ‹€.

-μžλ¦¬ν‘œμ‹œμž: 자리λ₯Ό λΉ„μ›Œλ‘κ³  μ–΄λ–€ μžλ¦¬μΈμ§€ ν‘œμ‹œν•΄μ£Όκ³ , κ·Έ μžλ¦¬μ— λ“€μ–΄κ°€λŠ” type만 ν‘œν˜„

μžλ°”μ—μ„œ λ°°μ—΄ 리슀트, μ—°κ²° 리슀트λ₯Ό 생성할 λ•Œ ν”νžˆ

ArrayList<Integer> list1 = new ArrayList<Integer>();

//<> μ•ˆμ— λ“€μ–΄κ°€λŠ” νƒ€μž…μ„ 지정해쀀닀.

이 λ•Œ String νƒ€μž…λ„ 지원할 수 있고, Integer νƒ€μž…λ„ μ§€μ›ν•˜λŠ” 자료ꡬ쑰λ₯Ό λ§Œλ“€κ³  μ‹Άλ‹€λ©΄, ν•˜λ‚˜ν•˜λ‚˜ 각각 λ”°λ‘œ λ§Œλ“œλŠ” 것이 μ•„λ‹ˆλΌ, μ œλ„€λ¦­μ΄λΌλŠ” 것을 μ‚¬μš©ν•˜μ—¬ 효율적인 μ½”λ“œλ₯Ό 지 수 μžˆλ‹€.

즉, ν•˜λ‚˜μ˜ νŠΉμ • νƒ€μž…μ„ 미리 μ§€μ •ν•΄μ£ΌλŠ” 것이 μ•„λ‹Œ, ν•„μš”μ— μ˜ν•΄ 지정할 수 μžˆλ„λ‘ ν•˜λŠ” 것이 일반(Generic) νƒ€μž…μΈ 것이닀.

=> μ„ μ–Έν•˜λŠ” 곳이 μ•„λ‹ˆλΌ, μ΄μš©ν•˜λŠ” κ³³μ—μ„œ νƒ€μž…μ„ μ§€μ •ν•˜λŠ” 기법!!

-μ œλ„€λ¦­μ€ 보톡 μ•„λž˜μ™€ 같은 νƒ€μž…λ“€μ΄ 많이 쓰이고, ν†΅μƒμ μœΌλ‘œ μ•„λž˜μ™€ 같이 ν‘œν˜„ν•œλ‹€.

<T> : Type
<E> : Element
<K> : Key
<V> : Value
<N> : Number
class MyArray<T>{
  T element;
  void setElement(T element) {this.element = element;}
  T getElement() { return element;}
}
//T = νƒ€μž… λ³€μˆ˜, μž„μ˜μ˜ μ°Έμ‘°ν˜• νƒ€μž…, 클래슀 뿐만 μ•„λ‹ˆλΌ 
λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜λ‚˜ λ°˜ν™˜κ°’μœΌλ‘œλ„ μ‚¬μš©ν•  수 μžˆλ‹€. 

-μ œλ„€λ¦­ 클래슀λ₯Ό 생성할 λ•Œμ—λŠ” νƒ€μž… λ³€μˆ˜ μžλ¦¬μ— μ‚¬μš©ν•  μ‹€μ œ νƒ€μž…μ„ λͺ…μ‹œν•΄μ•Ό ν•œλ‹€.

MyArray<Integer> myArr = new MyArray<Integer>();
//MyArray ν΄λž˜μŠ€μ— μ‚¬μš©λœ νƒ€μž… λ³€μˆ˜λ‘œ Integer μ‚¬μš©!

Kotline Generic

μ½”ν‹€λ¦°μ˜ ν΄λž˜μŠ€λŠ” μžλ°”μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ Type λ§€κ°œλ³€μˆ˜λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.
μžλ°”μ—μ„œ μ‚¬μš©ν•˜λŠ” Generic처럼 μ‚¬μš©ν•˜μ§€λ§Œ, 코틀린은 Generic을 μ •μ˜ν•œ 클래슀λ₯Ό 상속받을 λ•Œ λͺ…μ‹œμ μœΌλ‘œ 지정해야 ν•œλ‹€.
=>μ œλ„€λ¦­ μ •μ˜λ₯Ό ν•΄μ£Όμ–΄μ•Ό 객체둜 λ§Œλ“€μ–΄μ§„λ‹€!

class Box**<T>**(t: T){
	var value = t
}

여기에 type 인자λ₯Ό μ£Όλ©΄ λœλ‹€.

val box: Box<Int> = Box<Int>(1)

이λ₯Ό μƒμ†λ°›λŠ” ν΄λž˜μŠ€μ—μ„œλŠ” λ‹€μŒκ³Ό 같이 κ΅¬ν˜„ν•œλ‹€.

μ°Έμ‘°: https://st-lab.tistory.com/153

profile
Major interest in iOS πŸ€ & 🍎

0개의 λŒ“κΈ€