object Member {
private const val name: String = "John Park"
val age: Int? = 22
var address: String = "Seoul"
fun sayHello() {
println("Hello, $name!")
}
}
이러한 Kotlin코드는 아래와 같은 Java 코드로 변환된다.
public final class Member {
@NotNull
public static final Member INSTANCE = new Member();
@NotNull
private static final String name = "John Park";
@Nullable
private static final Integer age = 22;
@NotNull
private static String address = "Seoul";
private Member() {
}
@Nullable
public final Integer getAge() {
return age;
}
@NotNull
public final String getAddress() {
return address;
}
public final void setAddress(@NotNull String var1) {
Intrinsics.checkNotNullParameter(var1, "<set-?>");
address = var1;
}
public final void sayHello() {
String var1 = "Hello, John Park!";
System.out.println(var1);
}
}
- object는 상속, override가 불가능하므로, 모든 것이 final로 선언된다.
- 싱글턴 객체 이므로 static final Member INSTANCE가 선언되고, private 생성자가 생긴다.
- nullable한 타입은 @Nullable, null이 불가한 타입은 @NotNull 어노테이션이 붙는다.
- val은 final이 붙고, var는 붙지 않는다.
- const로 선언된 필드는 컴파일 타임 상수로 취급되며, 그 값이 사용되는 모든 곳에 인라이닝 된다. (getter 없음)
반응형
'Kotlin' 카테고리의 다른 글
[Kotlin in Action] 8.2 인라인 함수: 람다의 부가 비용 없애기 (0) | 2025.04.02 |
---|---|
[Kotlin] 코틀린과 자바에서의 익명 함수와 람다 차이 (0) | 2025.04.01 |
[Kotlin in Action] 8.1 고차 함수 정의 (0) | 2025.03.27 |
[Kotlin in Action] 7.5 프로퍼티 접근자 로직 재활용: 위임 프로퍼티 (0) | 2025.03.27 |
[Kotlin in Action] 7.4 구조 분해 선언과 component 함수 (0) | 2025.03.27 |
댓글