LoginSignup
4
1

More than 3 years have passed since last update.

Java → Kotlinのチートシート

Last updated at Posted at 2021-02-11

はじめに

この記事は「JavaからKotlinへの移行の際にこうすれば便利かな」というものを軽く纏めてみたものです。
Qiitaで初めて記事を書くので至らない点もあると思いますが、温かい目で見てもらえればと思います。
また、「ここはどうなんだ?」って所があれば教えていただけると助かります。

環境

Java: 1.8.0_281
Kotlin: 1.4.20

Integer.parseInt, Long.parseLong ...

ユーザーから受け取った引数を数値型に変換したい時のアレです。
これにはエラー処理が含まれてないので数値型かどうか検証も見てみると良いかもしれません。

Java

String str = "123";
Int i = Integer.parseInt(str);
Long l = Long.parseLong(str);

Kotlin

val str = "123" // String
val i = str.toInt() // Int
val l = str.toLong() // Long

数値型かどうか検証

この例ではString型からInt型へのキャスト・エラーハンドリングですが、他の数値型でも同じような感じで行けます。

Java

String str = "123abc";
try {
    // Int型へのキャストに成功
    Int i = Integer.parseInt(str);
} catch (NumberFormatException e) {
    // Int型へのキャストが失敗
    System.out.println("Error!");
    e.printStackTrace();
}

Kotlin

val str = "123abc" // String
val i = str.toIntOrNull() ?: kotlin.run {
    // Int型へのキャストが失敗
    println("Error!")
    return
}

// ↓ Int型へのキャストが成功したときの処理

instanceof

Java

String str = "hogefuga";
System.out.println(str instanceof String);
// → true

Kotlin

val str = "hogefuga" // String
println(str is String)
// → true

instanceof とキャストのあわせ技 (Smart Cast)

スマートキャストについてはこちらを見るほうが分かりやすいです。

Java

String str = "hogefuga";
if (str instanceof String) {
    String msg = (String) str;
    // str がString型の時
} else {
    // str がString型ではない時
}

// もしくは
if (!(str instanceof String)) {
    // str がString型ではない時
}

// str がString型の時
String msg = (String) str;

Kotlin

val str = "hogefuga" // String
if (str is String) {
    // str がString型の時
    // Kotlinではisが通った場合、自分でキャストしなくてもその型に自動でキャストしてくれます。
} else {
    // str がString型ではない時
}


// もしくは
if (str !is String) {
    // str がString型ではない時
}

// str がString型の時
// この場合も自動でキャストしてくれます。


// こんなのも
// String
val msg = str as? String ?: kotlin.run {
    // str がString型ではない時
    return
}

// str がString型の時

文献

ありがとうございます…!
Type Checks and Casts: 'is' and 'as': https://kotlinlang.org/docs/reference/typecasts.html

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1