에르노트

코틀린 toByteArray() 본문

Dev/Kotlin

코틀린 toByteArray()

두콩 2019. 11. 7. 10:50

코딩을 하다보면 모종의 이유로 문자열을 바이트 단위로 바꿀 일이 생긴다. 그래서 자바에서 String은 자체적으로 getBytes() 메소드를 제공했고, 간단하게 String의 내용을 바이트 배열로 변환할 수 있었다.

public class forjava {
public static void main(String[] args) {
String str = "";
byte[] arr = str.getBytes(Charset.defaultCharset());
}
}


그러면 코틀린에서는? getBytes() 메소드가 없다!!

fun main(){
val str = ""
val arr = str.getBytes()
}


기본적으로 자바와 100% 호환되게 만들어둔 코틀린이기에 해당 기능이 빠졌다고 생각할 수는 없다. 그래서 코틀린 공식 문서를 찾아보았는데 다행히 답은 매우 간단했다.



정확히 같은 기능을 하는 메소드가 이름만 바뀐채로 제공되고 있었다. 코틀린이 JVM 외에 JS나 Native 환경에서도 컴파일 될 수 있도록 설계되다보니 JVM을 위한 extension이 따로 제공되는데 이 과정에서 조금 더 직관적인 이름의 메소드로 리팩토링 된 것이 아닐까 싶다.

fun main(){
val str = ""
val arr = str.toByteArray(Charset.defaultCharset())
}

그래서 이렇게 사용해주면 제일 위에 있는 Java코드와 100% 동일한 코드가 된다.


결론: 코틀린에서는 getBytes() 대신에 toByteArray()를 사용하자!!

Comments