【KotlinとJava】whenを使う

12 whenを使う

KotlinとJava

if文ともう一つの制御構文when文だ。連続したif文を書くことはなくなる。

Use when.kt

fun main(args: Array<String>) {  
    cases("Hello")  
    cases(1)  
    cases(0L)  
    cases(MyClass())  
    cases("hello")  
}  
  
fun cases(obj: Any) {  
    when (obj) {  
        1 -> println("One")  
        "Hello" -> println("Greeting")  
        is Long -> println("Long")  
        !is String -> println("Not a string")  
        else -> println("Unknown")  
    }  
}  
  
class MyClass() {  
}

リンク

when

Javaのswitchと似ているが、分岐の条件はそろえる必要はない。サンプルのようにいろいろな条件が重なることは少ないだろうが、switch文より柔軟な記述をすることが可能だ。

Javaで記述

対比ができるようにJavaでも同じものを記述してみよう。

public class Exp12 {  
    public static void main(String[] args) {  
        cases("Hello");  
        cases(1);  
        cases(0L);  
        cases(new MyClass());  
        cases("hello");  
    }  
  
    private static void cases(Object obj) {  
        if (new Integer(1).equals(obj)) {  
            System.out.println("One");  
        } else if ("Hello".equals(obj)) {  
            System.out.println("Greeting");  
        } else if (obj instanceof Long) {  
            System.out.println("Long");  
        } else if (!(obj instanceof String)) {  
            System.out.println("Not a string");  
        } else {  
            System.out.println("Unknown");  
        }  
    }  
}

public class MyClass {  
}

前述の説明ではswitch文に似ていると書いたが、switch文では記述することができない。

if文が並ぶと、とても読みにくいことがわかる。その場でコーディングしている人にはわかるのかもしれないが、ぱっと見どんな条件なのかと言われると、目を凝らす必要があるだろう。

コメント

このブログの人気の投稿

【KotlinとJava】分解宣言

wxPythonでのモーダルダイアログ作成