2022. 5. 17. 21:09γJAVA/μλ°μ μ μ
https://hyejin.tistory.com/587
1οΈβ£ νμ€ μ λν μ΄μ annotation
@Override
: λ©μλ μμλ§ λΆμΌ μ μλ μ λν μ΄μ μΌλ‘, μ‘°μμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©νλ κ²μ΄λΌλ κ±Έ μ»΄νμΌλ¬μκ² μλ €μ£Όλ μν μ νλ€.
@Deprecated
: λ μ΄μ μ¬μ©λμ§ μλ νλλ λ©μλμ @Deprecatedλ₯Ό λΆμ΄λ κ²μ΄λ€.
μ΄ μ λν μ΄μ μ΄ λΆμ λμμ λ€λ₯Έ κ²μΌλ‘ λ체λμμΌλ λ μ΄μ μ¬μ©νμ§ μμ κ²μ κΆνλ€λ μλ―Έμ΄λ€.
@FunctionalInterface
: ν¨μν μΈν°νμ΄μ€λ₯Ό μ μΈν λ, μ΄ μ λν μ΄μ μ λΆμ΄λ©΄ μ»΄νμΌλ¬κ° ν¨μν μΈν°νμ΄μ€λ₯Ό μ¬λ°λ₯΄κ² μ μΈνλμ§ νμΈνκ³ , μλͺ»λ κ²½μ° μλ¬λ₯Ό λ°μμν¨λ€.
(ν¨μν μΈν°νμ΄μ€λ μΆμ λ©μλκ° νλλΏμ΄μ΄μΌ νλ€λ μ μ½μ΄ μλ€.)
@SuppressWarnings
μ»΄νμΌλ¬κ° 보μ¬μ£Όλ κ²½κ³ λ©μμ§κ° λνλμ§ μκ² μ΅μ ν΄μ€λ€.
μ΄μ μμ μμμ²λΌ μ»΄νμΌλ¬μ κ²½κ³ λ©μμ§λ 무μνκ³ λμ΄κ° μ μμ§λ§, λͺ¨λ νμΈνκ³ ν΄κ²°ν΄μ μ»΄νμΌ νμ μ΄λ ν λ©μμ§λ λνλμ§ μκ² ν΄μΌ νλ€.
κ·Έλ¬λ κ²½μ°μ λ°λΌμλ κ²½κ³ κ° λ°μν κ²μ μλ©΄μλ 묡μΈν΄μΌ ν λκ° μλλ°, μ΄ κ²½κ³ λ₯Ό κ·Έλλ‘ λλλ©΄ μ»΄νμΌν λ λ§λ€ λ©μμ§κ° λνλλ€.
-> μ΄λλ 묡μΈν΄μΌνλ κ²½κ³ κ° λ°μνλ λμμ λ°λμ @SuppressWarnigns λ₯Ό λΆμ¬μ μ»΄νμΌ νμ μ΄λ€ κ²½κ³ λ©μμ§λ λνλμ§ μκ² ν΄μΌνλ€.
@SuppressWarnings λ‘ μ΅μ ν μ μλ κ²½κ³ λ©μμ§μ μ’ λ₯λ μ¬λ¬κ°μ§ μλλ° deprecation, unchecked, rawtypes, varargs λ±μ΄ μλ€.
deprecation μ μμ λ³Έ κ²κ³Ό κ°μ΄ @Deprecation μ΄ λΆμ λμμ μ¬μ©ν΄μ λ°μνλ κ²½κ³
unchecked λ μ§λ€λ¦μ€λ‘ νμ μ μ§μ νμ§ μμμ λ λ°μνλ κ²½κ³
rawtypesλ μ§λ€λ¦μ€λ₯Ό μ¬μ©νμ§ μμμ λ°μνλ κ²½κ³
varargs λ κ°λ³μΈμμ νμ μ΄ μ§λ€λ¦ νμ μΌ λ λ°μνλ κ²½κ³ λ₯Ό μ΅μ ν λ μ¬μ©νλ€.
main λ©μλ μμ @SuppressWarnings("deprecation")μ λΆμ¬μ μ΄ λ©μλ λ΄μμ μΌμ΄λλ deprecationκ³Ό κ΄λ ¨λ λͺ¨λ κ²½κ³ κ° λνλμ§ μκ² νλ€.
κ·Έλ¦¬κ³ νμ μ μ§μ νμ§ μμ ArrayListλ₯Ό μμ±ν κ³³μ @SuppressWarnings("unchecked")λ₯Ό λΆμ¬μ κ²½κ³ λ₯Ό μ΅μ νλ€.
2οΈβ£ λ©ν μ λν μ΄μ
λ©ν μ λν μ΄μ μ μ λν μ΄μ μ μν μ λν μ΄μ , μ¦ μ λν μ΄μ μ λΆμ΄λ μ λν μ΄μ μΌλ‘ μ λν μ΄μ μ μ μν λ μ λν μ΄μ μ μ μ©λμμ΄λ μ μ§κΈ°κ° λ±μ μ§μ νλλ° μ¬μ©λλ€.
@Target
: μ λν μ΄μ μ΄ μ μ© κ°λ₯ν λμμ μ§μ νλλ° μ¬μ©λλ€.
-> FILEDλ κΈ°λ³Έν, TYPE_USEλ μ°Έμ‘°νμ μ¬μ©λλ€.
@Retention
: μ λν μ΄μ μ΄ μ μ§λλ κΈ°κ°μ μ§μ νλλ° μ¬μ©λλ€.
SOURCE :μ»΄νμΌλ¬κ° μ¬μ©νλ μ λν μ΄μ ex) @Override, @SuppressWarnings
RUNTIME : μ€νμμ 리νλ μ μ ν΅ν΄ ν΄λμ€ νμΌμ μ μ₯λ μ λν μ΄μ μ μ 보λ₯Ό μ½μ΄μ μ²λ¦¬ν μ μλ€.
CLASS: μ»΄νμΌλ¬κ° μ λν μ΄μ μ μ 보λ₯Ό ν΄λμ€ νμΌμ μ μ₯ν μ μκ²λ νμ§λ§, ν΄λμ€ νμΌμ΄ jvmμ λ‘λ©λ λλ μ λν μ΄μ μ μ λ³΄κ° λ¬΄μλμ΄ μ€ν μμ μ λν μ΄μ μ λν μ 보λ₯Ό μ»μ μ μλ€.
@Documented
: μ λν μ΄μ μ λν μ λ³΄κ° javadocμΌλ‘ μμ±ν λ¬Έμμ ν¬ν¨λλλ‘ νλ€.
μλ°μμ μ 곡νλ κΈ°λ³Έ μ λν μ΄μ μ€μμ @Override μ @SuppressWarnings λ₯Ό μ μΈνκ³ λ λͺ¨λ λ©ν μ λν μ΄μ μ΄ λΆμ΄ μλ€.
@Inherited
: μ λν μ΄μ μ΄ μμ ν΄λμ€μ μμλλλ‘ νλ€. @Inherited κ° λΆμ μ λν μ΄μ μ μ‘°μ ν΄λμ€μ λΆμ΄λ©΄, μμ ν΄λμ€λ μ΄ μ λν μ΄μ μ΄ λΆμ κ²κ³Ό κ°μ΄ μΈμλλ€.
@Repeatable
: μ΄ μ λν μ΄μ μ΄ λΆμ μ λν μ΄μ μ μ¬λ¬λ² λΆμΌ μ μλ€.
-> μ΄κ±΄ μΌλ°μ μΈ μ λ Έν μ΄μ κ³Ό λ¬λ¦¬ κ°μ μ΄λ¦μ μ λν μ΄μ μ΄ μ¬λ¬ κ°κ° νλμ λμμ μ μ©ν μ μκΈ° λλ¬Έμ,
μ΄ μ λν μ΄μ λ€μ νλλ‘ λ¬Άμ΄μ λ€λ£° μ μλ μ λν μ΄μ λ μΆκ°λ‘ μ μν΄μΌ νλ€.
@Native
: λ€μ΄ν°λΈ λ©μλμ μν΄ μ°Έμ‘°λλ μμνλμ λΆμ΄λ μ λν μ΄μ μ΄λ€.
3οΈβ£ μ λν μ΄μ νμ μ μνκΈ°
-> '@' κΈ°νΈλ₯Ό λΆμ΄λ κ²μ μ μΈνλ©΄ μΈν°νμ΄μ€λ₯Ό μ μνλ κ²κ³Ό λμΌνλ€.
μ λν μ΄μ λ΄μ μ μΈλ λ©μλλ₯Ό μ λν μ΄μ μ μμλΌκ³ νλ€.
μ λν μ΄μ μ μμλ λ°νκ°μ΄ μκ³ , 맀κ°λ³μλ μλ μΆμ λ©μλμ ννλ₯Ό κ°μ§λ©°, μμμ ν΅ν΄ ꡬννμ§ μμλ λλ€.
λ€λ§ μ λν μ΄μ μ μ μ©ν λ μ΄ μμλ€μ κ°μ λΉ μ§μμ΄ μ§μ ν΄μ£Όμ΄μΌ νλ€.
(μ΄λ μμλ μκ΄μλ€.)
μ λν μ΄μ μ κ° μμλ κΈ°λ³Έκ°μ κ°μ§ μ μμΌλ©°, κΈ°λ³Έκ°μ΄ μλ μμλ μ λν μ΄μ μ μ μ©ν λ κ°μ μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έκ°μ΄ μ¬μ©λλ€.
μ λν μ΄μ μμκ° μ€μ§ νλλΏμ΄κ³ μ΄λ¦μ΄ valueμΈ κ²½μ°, μ λν μ΄μ μ μ μ©ν λ μμμ μ΄λ¦μ μλ΅νκ³ κ°λ§ μ μ΄λ λλ€.
μμ νμ μ΄ λ°°μ΄μΈ κ²½μ° κ΄νΈ{}λ₯Ό μ¬μ©ν΄μ μ¬λ¬ κ°μ κ°μ μ§μ ν μ μλ€.
4οΈβ£ λ§μ»€ μ λν μ΄μ Marker Annotation
κ°μ μ§μ ν νμκ° μλ κ²½μ°, μ λν μ΄μ μ μμλ₯Ό νλλ μ μνμ§ μμ μ μλ€.
- μ λν μ΄μ μμμ κ·μΉ
- μμμ νμ μ κΈ°λ³Έν, String, enum, μ λν μ΄μ , Class λ§ νμ©λλ€.
- () μμ 맀κ°λ³μλ₯Ό μ μΈν μ μλ€.
- μμΈλ₯Ό μ μΈν μ μλ€.
- μμλ₯Ό νμ 맀κ°λ³μ<T>λ‘ μ μν μ μλ€.
-> μ λν μ΄μ μ μ§μ μ μνκ³ , μ λν μ΄μ μ μμμ κ°μ μΆλ ₯νλ λ°©λ²μ 보μ¬μ£Όλ μμ
AnnotationEx5ν΄λμ€μ μ μ©λ μ λν μ΄μ μ μ€νμκ°μ μ»μΌλ €λ©΄
Class<AnnotationEx5> cls = AnnotationEx5.class;
TestInfo anno = cls.getAnnotation(TestInfo.class);
μ΄λ κ² νλ©΄ λλ€.
ν΄λμ€ κ°μ²΄κ° κ°μ§κ³ μλ getAnnotation() μ΄λΌλ λ©μλμ 맀κ°λ³μλ‘ μ 보λ₯Ό μ»κ³ μ νλ μ λν μ΄μ μ μ§μ ν΄μ£Όκ±°λ, getAnnotations()λ‘ λͺ¨λ μ λν μ΄μ μ λ°°μ΄λ‘ λ°μμ¬ μ μλ€.
5οΈβ£ νλ‘μΈμ€μ μ°λ λ
νλ‘μΈμ€ process λ μ€νμ€μΈ νλ‘κ·Έλ¨μΌλ‘ νλ‘κ·Έλ¨μ μ€ννλ©΄ OSλ‘λΆν° μ€νμ νμν μμ(λ©λͺ¨λ¦¬)λ₯Ό ν λΉλ°μ νλ‘μΈμ€κ° λλ€.
νλ‘μΈμ€λ νλ‘κ·Έλ¨μ μννλ λ° νμν λ°μ΄ν°μ λ©λͺ¨λ¦¬ λ±μ μμ κ·Έλ¦¬κ³ μ°λ λλ‘ κ΅¬μ±λμ΄ μμΌλ©° νλ‘μΈμ€μ μμμ μ΄μ©ν΄μ μ€μ λ‘ μμ μ μννλ κ²μ΄ λ°λ‘ μ°λ λμ΄λ€.
λͺ¨λ νλ‘μΈμ€μλ μ΅μν νλ μ΄μμ μ°λ λκ° μ‘΄μ¬νλ©°, λ μ΄μμ μ°λ λλ₯Ό κ°μ§ νλ‘μΈμ€λ₯Ό λ©ν°μ°λ λ νλ‘μΈμ€λΌκ³ νλ€.
νλμ νλ‘μΈμ€κ° κ°μ§ μ μλ μ°λ λμ κ°μλ μ νλμ΄ μμ§ μμΌλ μ°λ λκ° μμ μ μννλλ° κ°λ³μ μΈ λ©λͺ¨λ¦¬ 곡κ°μ νμλ‘ νκΈ° λλ¬Έμ νλ‘μΈμ€μ λ©λͺ¨λ¦¬ νκ³μ λ°λΌ μμ±ν μ μλ μ°λ λμ μκ° κ²°μ λλ€.
- λ©ν°νμ€νΉκ³Ό λ©ν°μ°λ λ©
νμ¬ μ°λ¦¬κ° μ¬μ©νκ³ μλ μλμ°λ μ λμ€λ₯Ό ν¬ν¨ν λλΆλΆμ osλ λ©ν°νμ€νΉμ μ§μνκΈ° λλ¬Έμ μ¬λ¬κ°μ νλ‘μΈμ€κ° λμμ μ€νλ μ μλ€.
λ©ν°μ°λ λ©μ νλμ νλ‘μΈμ€ λ΄μμ μ¬λ¬ μ°λ λκ° λμμ μμ μ μννλ κ²μ΄λ€.
cpuμ μ½μ΄κ° ν λ²μ λ¨ νλμ μμ λ§ μνν μ μμΌλ―λ‘ μ€μ λ‘ λμμ μ²λ¦¬λλ μμ μ κ°μλ μ½μ΄μ κ°μμ μΌμΉνλ€.
- λ©ν°μ°λ λ©μ μ₯λ¨μ
μ₯μ
- cpuμ μ¬μ©λ₯ μ ν₯μμν¨λ€.
- μμμ λ³΄λ€ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μλ€.
- μ¬μ©μμ λν μλ΅μ±μ΄ ν₯μλλ€.
- μμ μ΄ λΆλ¦¬λμ΄ μ½λκ° κ°κ²°ν΄μ§λ€.
λ©μ μ λ‘ μ±ν νλ©΄μ νμΌμ λ€μ΄λ‘λ λ°κ±°λ μμ± λνλ₯Ό λλ μ μλ κ²μ΄ κ°λ₯ν μ΄μ κ° λ°λ‘ λ©ν°μ°λ λλ‘ μμ±λμ΄ μκΈ° λλ¬Έμ΄λ€.
λ¨μ
-> λ©ν°μ°λ λ νλ‘μΈμ€λ μ¬λ¬ μ°λ λκ° κ°μ νλ‘μΈμ€ λ΄μμ μμμ 곡μ νλ©΄μ μμ μ νκΈ° λλ¬Έμ λ°μν μ μλ λκΈ°ν, κ΅μ°©μνμ κ°μ λ¬Έμ λ€μ κ³ λ €ν΄μ μ μ€ν νλ‘κ·Έλλ°ν΄μΌνλ€.