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 클릭

 

+ Recent posts