본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


코틀린을 보면 변수를 선언할 때 Int, String, Double 과 같이 선언을 하며 자바는 원시형(Primitive) 그리고  래퍼(Wrapper) 두 가지로 선언을 할 수 있다. 코틀린은 자바와 같이 이런 구분이 없다. 코틀린은 작성된 코드가 JVM에서 실행될 때 모두 래퍼로 매칭되는 것일까?


확인을 해보자면 아래와 같다. 아래는 코틀린 코드이다. 


1
2
3
4
var no: Int = 10
var count: Int? = 20
var name: String = "kkang"
var email: String = "ktko@tistory.com"



위의 코틀린 코드를 자바로 변환하면 아래와 같다. 이것은 책의 예제이고 직접 코틀린을 자바코드로 변환을 했었을 때 이렇게 안나왔다. 방법은 나도 잘 모르겠다 ...


1
2
3
4
5
6
7
private static int no = 10;
@Nullable
private static Integer count = Integer.valueOf(20);
@NotNull
privae static String name = "kkang";
@Nullable
private static String email = "a@a.com";



위의 두 코드를 비고해 보자면 ?를 붙이냐에 따라 @NotNull인지 @Nullalbe인지 정해지며, int, Integer과 같이 Primitive인지 Wrapper인지 정해진다.


데이터 타입이 매핑 되는지는 꼭 알고 있을 필요는 없다고 책에서는 설명되었는데 중요한 것 같아서 정리를 해보았다.


IntelliJ에서 변환했더니 아래와 같이 나왔다. 책에서 내용이 다른데 왜 다른지는 잘 모르겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import org.jetbrains.annotations.NotNull;
 
@Metadata(
   mv = {1113},
   bv = {103},
   k = 2,
   d1 = {"\u0000\u0014\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\u0019\u0010\u0000\u001a\u00020\u00012\f\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003¢\u0006\u0002\u0010\u0005¨\u0006\u0006"},
   d2 = {"main""""args""""""([Ljava/lang/String;)V""KotlinTest"}
)
public final class TestKt {
   public static final void main(@NotNull String[] args) {
      Intrinsics.checkParameterIsNotNull(args, "args");
      int no = true;
      int count = true;
      String name = "kkang";
      String email = "ktko@tistory.com";
   }
}
 
cs