코틀린 최상위 함수, 프로퍼티

siwan·2021년 11월 9일
0

최상위 함수

  • 기존 자바에서는 하나의 메소드 또는 프로퍼티를 호출하기 위해서는 클래스안에 포함시켜아한다.
    하지만 코틀린에서는 메소드 또는 프로퍼티를 파일안에 클래스 없이 최상위 수준에 위치 하면 된다.
---아래 코드 처럼 클래스 없이 파일안에 최상위 함수로 선언 할 수 있다.
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"
    기본적으로 최상위 프로퍼티도 다른 모든 프로퍼티 처럼 접근자 메소드를 통해 자바에 노출 된다.
    위와 같은 상수를 자연스럽게 이용하려면 const 변경자를 추가하면 된다.
    단 원시 타입과 String타입의 프로퍼티만 const로 지정 가능
--kotlin---
const val UIX_LINE_SEPARATOR ="\n"

--java---
public static final String UIX_LINE_SEPARATOR ="\n"
profile
station3 다방 안드로이드 개발자

0개의 댓글