Post

(Kotlin) java의 static final 변수에 대응되는 것은?

1
2
3
4
5
6
class KakaoAuthHelper {
    companion object {  
        const val REDIRECT_URI = "http://webpage-observer"  
        val AUTHZ_CODE_URL = "https://kauth.kakao.com/oauth/authorize?client_id=${KakaoConfig.app_rest_api_key}&redirect_uri=${REDIRECT_URI}&response_type=code"  
    }
}

AUTHZ_CODE_URL은 변수가 들어가야 해서 const를 안붙였지만… Byte Code -> Java Decompile 해보면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static final String REDIRECT_URI = "http://webpage-observer";

private static final String AUTHZ_CODE_URL;

static {
    AUTHZ_CODE_URL = 
        "https://kauth.kakao.com/oauth/authorize?client_id=" + 
        KakaoConfig.INSTANCE.getApp_rest_api_key() + 
        "&redirect_uri=http://webpage-observer&response_type=code";
}

public static final class Companion {
    @NotNull
    public final String getAUTHZ_CODE_URL() {
        return KakaoAuthHelper.AUTHZ_CODE_URL;
    }
}

이렇기 때문에 const를 붙이거나 안붙이거나 어차피 쓰는 쪽에서의 큰 차이는 없다. 둘 다 final이라 한 번 할당되면 수정 불가하므로…

This post is licensed under CC BY 4.0 by the author.