Hello, Android!

자료형 프로젝션 본문

Kotlin

자료형 프로젝션

lwndnjs93 2020. 4. 19. 18:17

제네릭 클래스에서 가변성을 지정하는 두가지 방법이 있다

첫번째로는 지금까지 사용했던 제네릭 클래스 선언과 동시에 가변성을 지정하는 방법이다

class Covariance<out T>(val size: Int) 와 같이 클래스 선언과 동시에 공변성으로 선언하는 방법이다

선언과 동시에 가변성을 지정하게되면 해당 클래스를 사용하는 모든 곳에서 공통적으로 적용되어

사용하는 곳에서 별도로 지정할 필요가 없어 편리하며

이를 선언 지점 변성 이라고 한다

 

이와 반대는 사용하는 지점에서 가변성을 지정하는 것이 사용자 지점 변성 이라고 한다

이번에는 Friends 클래스에서 in, out으로 가변성을 지정하는것이 아닌

Friends클래스를 활용하는 함수에서 out으로 지정을 하였다

이렇게 사용하는 요소의 특정 자료형을 지정해 제한하는것을 자료형 프로젝션 이라고 한다

위와 같이 자료형 프로젝션으로 out으로 지정한 경우 in 처럼 사용하는것이 제한된다

val friendData: FriendInfo = friend.friends 와 같이 데이터를 get 하는 것은 out으로 지정한 상태에서 가능하지만

friend.friends = FriendInfo() 처럼 데이터를 set 하는 것은 out에서는 불가능 하고 in으로 지정한 상태에서 가능하다

이렇게 out일때 데이터의 get만 허용하고 in 일때만 데이터의 set만 허용함으로

데이터의 안정성을 보장할수 있다

'Kotlin' 카테고리의 다른 글

배열 arrayof, Array()  (0) 2020.06.21
reified타입  (0) 2020.06.14
상위 하위 형식의 가변성  (0) 2020.04.18
형식 매개변수 제한  (0) 2020.04.15
제네릭 클래스 자료형 변환  (0) 2020.04.14