Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kotlin 의 @JvmStatic 어노테이션 #156

Open
occidere opened this issue Dec 7, 2020 · 0 comments
Open

Kotlin 의 @JvmStatic 어노테이션 #156

occidere opened this issue Dec 7, 2020 · 0 comments
Assignees

Comments

@occidere
Copy link
Owner

occidere commented Dec 7, 2020

@JvmStatic

함수와 프로퍼티에 static 하게 접근할 수 있도록 추가적인 메서드 또는 getter / setter 를 생성한다.

Example

아래와 같은 Kotlin object 가 있다.

object Utils {
    fun printAll(list: List<String>) {
        println(list)
    }

    val version = "v0.0.1"
}

이 object 의 함수와 프로퍼티를 같은 kotlin 에서는 직접적으로 접근할 수 있다.

fun main() {
    Utils.printAll(listOf("a", "b", "c"))
    println(Utils.version)
}

그러나 Java 에서는 해당 object 의 메서드 / 변수에 직접적으로 접근할 수 없다.

public static void main(String[] args) {
    Utils.printAll(Arrays.asList("a", "b", "c")); // compile-error
    System.out.println(Utils.version); // compile-error
 
    Utils.INSTANCE.printAll(Arrays.asList("a", "b", "c")); // ok
    System.out.println(Utils.INSTANCE.getVersion()); // ok
}

이와 같은 경우에 @JvmStatic 어노테이션을 붙여주면 Java 에서도 Kotlin 과 동일하게 static 으로 접근할 수 있다.

object Utils {
    @JvmStatic
    fun printAll(list: List<String>) {
        println(list)
    }

    @JvmStatic
    val version = "v0.0.1"
}
public static void main(String[] args) {
    Utils.printAll(Arrays.asList("a", "b", "c")); // ok
    System.out.println(Utils.getVersion()); // ok

    Utils.INSTANCE.printAll(Arrays.asList("a", "b", "c")); // ok
    System.out.println(Utils.INSTANCE.getVersion()); // ok
}

참고

@occidere occidere self-assigned this Dec 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant