코틀린Kotlin에서 자바 인터페이스 getter 처리

less than 1 minute read

문제의 getter를 포함한 UserDetails 인터페이스

interface UserDetails { fun getUsername(): String }

자바에서의 처리

public class User implements UserDetails { @Getter private String username; }

코틀린Kotlin에서의 처리

1.

class User : UserDetails { constructor(username:String){ this.username = username } override fun getUsername() = username val username: String = getUsername @JvmName(“getUsername_”) get() = username }

2.

class User : UserDetails { constructor(username: String){ this.username = username
} private val username: String override fun getUsername() = username }

3. 이게 제일 깔끔하고 알아보기 편하다.

class User(val username: String) : UserDetails { override fun getUsername() = username }

상황에 따라 1,2번을 써야하는 경우가 있기는 할까