클래스 외부의 함수(A package-level/ Top-level 함수)

360 단어·1 분·원문(.md)

자바와 달리 코틀린에서는 클래스 외부에 함수를 작성할 수 있다.

함수 논리가 클래스의 속성이나 목적과 무관한 경우 사라져야한다.

이것은 코틀린이 독점적으로 객체 지향 언어가 아니며 기능적으로도 사용될 수 있기 때문에 가능한 일이다.

package com.example

fun hello(){
    println("hello")
}

위의 코드를 자바로 변환하면 다음과 같은 형태가 된다.

package com.example;

public final class ExampleKt {
    public static void sayHello() {
        System.out.println("hello");
    }
}

위의 코드에서 ExampleKt 클래스는 코틀린 파일의 이름에 따라 자동으로 생성되며, 패키지 레벨 함수는 해당 클래스 내에 정적 메서드로 생성된다.

자바로 변환할 때 클래스 이름 지정해주는 방법 #

@file:JvmName("MyFunctions")

package com.example

fun hello(){
    println("hello")
}

위의 코틀린 코드에서 @file:JvmName("MyFunctions") 어노테이션은 해당 파일에서 생성되는 클래스 이름 MyFunctions로 변경한다는 의미이다.

package com.example;

public final class MyFunctions {
    public static void sayHello() {
        System.out.println("hello");
    }
}

@file:JvmName("$ClassName")을 사용해 지정해 줄 수 있다.

Back-End/kotlin/top_level.md