타입을 안전하게 만들기 위한 방식 우리가 아이디와 비밀번호로 로그인하는 간단한 로그인 시스템을 만든다고 해보자. 이런 로그인 시스템을 만들기 위해서 우리는 아이디나 비밀번호 값을 받기 위해 다음과 같이 LoginInfo 클래스를 선언하고 아이디(id)와 비밀번호(password)를 표현하기 위해 String 타입을 사용할 수 있다. data class LoginInfo( val id: String, val password: String ) 하지만, 이렇게 아이디나 비밀번호를 String 타입 값으로 설정하는 것은 안전하지 않다. String은 이곳저곳에서 다 쓰이는 타입이기 때문에 언제든 실수가 일어날 수 있기 때문이다. 예를 들어 다음과 같이 id 자리에 password를 넣고 password 자리에 ..
클래스
자바의 중첩 클래스 문제와 코틀린의 중첩 클래스 자바에서는 내부에 선언되는 중첩 클래스에서 기본적으로 바깥쪽 클래스의 변수를 참조할 수 있었다. 예를 들어 다음과 같이 OuterClass와 InnerClass가 있는 경우 InnerClass의 함수인 getOuterClassValue에서 OuterClass의 변수인 outerClassValue를 참조할 수 있었다. public class OuterClass { String outerClassValue = "outerClassValue"; class InnerClass { String getOuterClassValue() { return outerClassValue; } } } 하지만, 이 방식은 내부의 클래스에서 항상 외부의 클래스에 대한 참조를 유지한다..