1. @(annotation, 애노테이션)
- 사전적 의미는 "주석"
- 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 애노테이션
- 컴파일러 수준에서 해석되거나, 정적이어야한다.
2. @JvmStatic
- 자바에서는 코틀린의 컴패니언 객체를 접근하기 위해 @JvmStatic 애노테이션(annotation) 표기법을 사용
- const가 붙은 프로퍼티에는 @JvmStatic 애노테이션이 필요 없다.
3. const키워드
- 보통 val만 사용하면 실행 시간에 할당 값이 결정되고 값 변경 불가 임.
- const와 val을 함께 사용한 상수 표현은 컴파일 시간에 값이 결정되며, const사용은 오직 String이나
원시 자료형에 해당하는 타입만 가능함. 따라서, val만 사용할 때 함수와 같은 할당은 불가능
<KCustomer.kt>
public class KCustomer {
companion object {
const val LEVEL = "INTERMEDIATE" // const 상수 표현
@JvmStatic fun login() = println("Login...") // 애노테이션 표기 사용
}
}
<KCustomerAccess.java>
public class KCustomerAccess {
public static void main(String args[]) {
System.out.println(KCustomer.LEVEL); // 코틀린 클래스의 컴패니언 객체를 접근
KCustomer.login(); // 코틀린 클래스의 컴패니언 객체의 메서드를 호출 (@JvmStatic 사용)
KCustomer.Companion.login(); // 위와 동일한 결과로 애노테이션을 사용하지 않을 때 접근
}
}
1) @JvmStatic어노테이션이 있을 경우의 접근
- [코틀린클래스].프로퍼티/메소드
2) @JvmStatic어노테이션이 없을 경우 의 접근
- [코틀린클래스].Companion.프로퍼티/메소드
<실행결과>
INTERMEDIATE
Login...
Login...
<안드로이드 스튜디오에서 java main() 실행하기>
1) main()함수가 있는 "파일이름".java 확장자 파일 마우스 우클릭
2) Run "파일이름".main() with Coverage 클릭
'프로그래밍 > Kotlin' 카테고리의 다른 글
[코틀린] 추상 클래스(abstract class) [키워드 : abstract] (2) | 2024.11.15 |
---|---|
[코틀린] 자바에서 코틀린의 최상위 함수 접근 (0) | 2024.11.15 |
[코틀린] 정적 변수와 컴패니언 객체(Companion Object) [키워드 : companion object] (0) | 2024.11.15 |
[코틀린] 지연 초기화 2 [키워드 : by lazy, lazy] (0) | 2024.11.14 |
[코틀린] 지연 초기화 1 [키워드 : lateinit] (0) | 2024.11.14 |