Kotlin, Annotation, 상속 차이

이도현·2023년 8월 23일
1

Kotlin 공부

목록 보기
20/20

0. 개요

Annotation, 상속 만들어놓은 것을 가져와 사용하는것이다. 무엇을 가져와 어떻게 사용하는지에서 차이가 나는 듯 하다. 정확히 알고 가자.

1. 어노테이션

  • 메타데이터(부가기능)을 코드에 비침투적으로 추가할 수단

    메타데이터: 데이터에 대한 데이터(강아지가 포유류라는 것, 강아지는 네발로 걷는 다는 것,)
    코드에 비침투적으로 추가: 비 침투적이란 기존의 코드 로직에 직접적인 변경이나 개입 ㅇ벗이 추가적인 기능이나 행동을 적용할 수 있다는 것을 의미. AOP(Aspect-Oriented Progreamming)은 이런 반복적인 작업을 관심사라고 부르며, 이 관심사를 핵심 로직에서 분리, 필요한 위치에 비침투적으로 적용

  • 자바 또는 코틀린에서 사용됨.

2. 특징

1) 정의

annotation class MyAnnotation

2) 매개변수 사용

annotation class MyAnnotation(val value: String)

3) 주석 사용

@MyAnnotation("test")
class MyClass{}

4) 유용한 내장 주석

  • @JvmStatic: JVM에 정적 메서드로 표시되도록 만듭니다.
  • @JvmOverloads: 오버로드 생성자를 자동으로 생성
  • @JvmField: 프로퍼티를 JVM 필드로 표시
  • @Deprecated: APi가 더 이상권장되지 않음을 나타냄

5) 주석 대상(Use-site target)

  • 코틀린에서는 주석이 적용이 될 대상을 명시적으로 지정할 수 있습니다.
  • 프로퍼티 필드나 getter, setter등에 다르게 주석을 적용할 때 사용됨

3. 사용사례

  • 컴파일러 지시: 컴파일러에게 특정 코드를 어떻게 처리해야 하는지 지시
  • 리플렉션: 런타임에 클래스, 함수, 프로퍼티에 대한 정보를 조회
  • 프레임워크와 라이브러리: 특정 프레임워크나 라이브러리에서 코드의 동작 방식을 수정하거나 확장하는데 사용, Spring Framework, Android Jetpack, Jackson등에서 사용

4. 단점

  • 주석은 런타임 비용이 발생할 수 있다.
  • 주석을 너무 많이 사용하면 코드가 복잡해짐

5. 상속, 어노테이션 차이

1) 어노테이션

  • 컴파일 시나 런타임에 특정 작업을 위한 '정보를 제공'하는데 사용
  • 직접적인 동작 로직을 추가하지 않는다.

2) 상속

  • 코드의 재사용, 확장, 수정

3) 차이

  • 어노테이션은 개에게 이름표를 붙여서 구분하는 것이고 상속은 이름표를 가져와 이름을 적거나 이름을 지우거나 변경할 수 있는 것

Reference

https://sabarada.tistory.com/189

profile
좋은 지식 나누어요

0개의 댓글