【KotlinとJava】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文
が並ぶと、とても読みにくいことがわかる。その場でコーディングしている人にはわかるのかもしれないが、ぱっと見どんな条件なのかと言われると、目を凝らす必要があるだろう。
コメント
コメントを投稿