ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kotlin @UnsafeVariance
    카테고리 없음 2021. 4. 20. 17:11

    @UnsafeVariance는 Kotlin에서 사용되는 어노테이션 중 하나로, 특정 상황에서 타입 변성(type variance)을 무시하도록 한다. 이는 주로 제네릭 클래스나 함수에서 사용되며, 타입 안정성을 보장하기 위해 컴파일러가 강제하는 타입 제약을 우회할 수 있게 한다. 

     

    주의사항

    @UnsafeVariance를 사용할 때는 런타임 타입 안정성이 깨질 수 있으므로 주의해야 한다. 이는 타입 안전성을 컴파일러가 보장해 주지 않기 때문에, 잘못된 타입이 사용될 경우 런타임 예외가 발생할 수 있다.

    • 타입 변성이 안전하게 사용되는지 확신이 있을 때만 사용.
    • 컴파일러가 강제하는 타입 안정성을 무시함으로써 발생할 수 있는 모든 부작용을 고려해야 한다.

    이러한 점들을 유념하면서 @UnsafeVariance를 사용한다면, 특정 상황에서 편리하게 타입 제약을 우회할 수 있다.

     

    예)

     

     

    <out E> 가 붙어있기 때문에 데이터를 생산만 할 수 있지만 안전하다고 생각되는 소비되는 곳에 해당 어노테이션을 붙임으로써 가능해질 수 있다. 실제로 contains 는 해당 파라미터로 전달되는 element 를 저장하는 것이 아니고 포함하는지 비교하는 메서드이기 때문에 해당

    Collection에 전혀 다른 타입의 값이 저장되는 일은 없기 때문에 @UnsafeVariance 를 주어 다른 타입을 허용하는 것.

     

Designed by Tistory.