[JAVA] GENERICS

μ„±μž₯일기·2024λ…„ 7μ›” 24일

[SWCAMP] JAVA

λͺ©λ‘ 보기
13/16

μ œλ„€λ¦­μŠ€

πŸ’‘ μ œλ„€λ¦­μ€ λ°μ΄ν„°μ˜ νƒ€μž…μ„ μΌλ°˜ν™”ν•œλ‹€λŠ” 의미λ₯Ό κ°€μ§„λ‹€.
μ œλ„€λ¦­μŠ€λ₯Ό ν™œμš©ν•˜λŠ” μ œλ„€λ¦­ ν΄λž˜μŠ€λŠ” μ œλ„€λ¦­ νƒ€μž…(T, E, K, V)을 ν™œμš©ν•˜μ—¬ ν•˜λ‚˜μ˜ 클래슀둜 ν•΄λ‹Ή μ œλ„€λ¦­ νƒ€μž…μ— λ³€ν™”λ₯Ό μ€˜μ„œ μ œλ„€λ¦­ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ‹€μ–‘ν•œ νƒ€μž…μ„ μ§€λ‹Œ μΈμŠ€ν„΄μŠ€λ‘œ ν™œμš©ν•  수 μžˆλ‹€.

public class GenericTest<T> {

	private T value;
	
	public T getValue() {
		return value;	
	}
	
	public void setValue(T value) {
		this.value = value;
	}
}
// μ œλ„€λ¦­ 클래슀의 T(νƒ€μž…)에 ν•΄λ‹Ήν•˜λŠ” 뢀뢄이 λͺ¨λ‘ Integer둜  λ³€ν™˜λœλ‹€.
GenericTest<Integer> gt = new GenericTest<Integer>();

μ œλ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

πŸ’‘ ν•˜λ‚˜μ˜ 클래슀만 μž‘μ„±ν•΄λ„ μ—¬λŸ¬ νƒ€μž…μ˜ ν•„λ“œ 값을 κ°€μ§„ 클래슀둜 λ³€ν˜•ν•΄μ„œ λ‹€λ£° 수 μžˆμ–΄ κ΅¬ν˜„μ˜ νŽΈμ˜μ„±μ΄ μžˆλ‹€.
μ œλ„€λ¦­μ„ μ μš©ν•œ ν΄λž˜μŠ€λŠ” νƒ€μž…μ„ λͺ…ν™•νžˆ μ•Œκ³  μ“°κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή μ œλ„€λ¦­ 클래슀의 ν•„λ“œ νƒ€μž…μ΄λ‚˜ λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜λ‚˜ λ°˜ν™˜ν˜•μ„ μ•Œκ³  μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μžλ£Œν˜•μ˜ μ•ˆμ „μ„±μ΄ λ†’λ‹€.

μ™€μΌλ“œ μΉ΄λ“œ

πŸ’‘ μ œλ„€λ¦­ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μœ μ—°ν•˜κ²Œ ν™œμš©ν•˜κΈ° μœ„ν•œ 문법이닀. λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜λ‘œ 받을 μ‹œ νƒ€μž…μ„ μ›ν•˜λŠ” 만큼으둜 μ œν•œν•˜λŠ” κ²ƒμœΌλ‘œ λΆˆνŠΉμ •ν•œ μ œλ„€λ¦­ 클래슀 νƒ€μž…μ„ 쑰금 더 ν™œμš©ν•  수 μžˆλ‹€.

  • \<?>: λͺ¨λ“  νƒ€μž…μ„ ν—ˆμš©ν•˜λŠ” μ™€μΌλ“œ μΉ΄λ“œ
  • \<? extends T>: T νƒ€μž… λ˜λŠ” T의 ν•˜μœ„ νƒ€μž…μ„ ν—ˆμš©ν•˜λŠ” μ™€μΌλ“œ μΉ΄λ“œ
  • \<? super T>: T νƒ€μž… λ˜λŠ” T의 μƒμœ„ νƒ€μž…μ„ ν—ˆμš©ν•˜λŠ” μ™€μΌλ“œ μΉ΄λ“œ
profile
μ—”μ§€λ‹ˆμ–΄λ‘œμ˜ μ„±μž₯일지

0개의 λŒ“κΈ€