---아래 코드 처럼 클래스 없이 파일안에 최상위 함수로 선언 할 수 있다.
package strings
JoinStr.kt
fun joinToString():String{...}
JVM이 클래스 안에 들어있는 코드만을 실행 할 수 있기 때문에 컴파일러는 파일을 컴파일 할 때 클래스를 정의 해준다.
package strings;
public class JoinKt{
public static String joinToString(...){ ... }
}
클래스 이름은 코틀린 소스 파일의 이름과 대응한다. 코틀린의 모든 최상위 함수는 클래스의 정적인 메소드가 된다.
import strings.JoinKt;
JoinKt.joinToString(list,",","","")
- 파일에 대응하는 클래스의 이름 변경
코틀린 최상위 함수가 포함되는 클래스의 이름을 바꾸고 싶다면 @JvmName 어노테이션을 추가 한다.
어노테이션의 위치는 파일의 맨 앞. 패키지 이름 선언 이전에 위치한다.
최상위 함수와 마찬가지로 프로퍼티도 파일의 최상위 수준에 놓을 수 있다.
var opCount = 0
fun performOperation(){
opCount++
// ...
}
fun reportOperationCount(){
println("Operation performed $opCount times")
}
프로퍼티의 값은 정적 필드에 저장된다.
val UIX_LINE_SEPARATOR ="\n"
기본적으로 최상위 프로퍼티도 다른 모든 프로퍼티 처럼 접근자 메소드를 통해 자바에 노출 된다.--kotlin---
const val UIX_LINE_SEPARATOR ="\n"
--java---
public static final String UIX_LINE_SEPARATOR ="\n"